diff --git a/MOVED b/MOVED index a6d402252480..161aace92087 100644 --- a/MOVED +++ b/MOVED @@ -1,10532 +1,10533 @@ # # MOVED -- A list of (recently) moved or removed ports # # $FreeBSD$ # # Each entry consists of a single line containing the following four # fields in the order named, separated with the pipe (`|') character: # # Port: A port that was moved (category/portname) # Moved to: Where the port was moved to, or which port users can # and should migrate to (category/portname); no entry # indicates that the port was deleted # Date: When the moving or the removal was done (YYYY-MM-DD, # in PST/PDT) # Why: The reason why the port was moved or removed # # Keep this list sorted in the chronological order. New entries must be # added at the tail. Reason for (re)move should start with a capital letter # (unless it's a file or other special name) and not end with the dot. # # If previously removed port gets restored, make sure to delete the relevant # line. If a port is copied to a new location and the old location is kept # (e.g. upgraded to a later version), don't record it here. # # This file can be linted with Tools/scripts/MOVEDlint.awk # # Port|Moved to|Date|Why audio/polypaudio|audio/pulseaudio|2008-01-01|Project renamed audio/akode-plugins-polypaudio||2008-01-01|Polypaudio is obsolete in favor of Pulseaudio audio/teknap|net-p2p/teknap|2008-01-09|Moved to net-p2p category net/freeradius-devel|net/freeradius2|2008-01-18|Development version no longer necessary devel/p5-gearmand|devel/p5-Gearman-Server|2008-01-20|Replaced by p5-Gearman-Server databases/mysqltoolkit|databases/maatkit|2008-01-21|Project was renamed games/sturmbahnfahrer|games/stormbaancoureur|2008-01-27|Project was renamed net/cactid|net-mgmt/cacti-spine|2008-01-27|Project was renamed devel/wxGlade-devel||2008-02-11|Has expired: has been the same version as wxGlade for a long time; use it instead sysutils/sge|sysutils/sge60|2008-02-12|Splitting into 6.0 and 6.1 versions mail/linux-netscape-messenger|mail/thunderbird|2008-02-13|Abandoned by AOL www/linux-netscape-navigator|www/firefox|2008-02-13|Abandoned by AOL audio/daapd||2008-02-26|Has expired: Development stalled, outdated. Does not support newer versions of DAAP protocol audio/daaplib||2008-02-26|Has expired: Development stalled for years, outdated. Does not support newer versions of DAAP protocol www/libhttpd-persistent||2008-02-27|Has expired: Development stalled for years, outdated www/vtiger4||2008-02-27|Has expired: This version is no longer supported by the developers www/xpi-surfkeys||2008-02-27|Has expired: Development has been ceased sysutils/eventwatcher||2008-02-27|Has expired: no active development sysutils/p5-UPS-Nut||2008-02-27|Has expired: Version branch long since retired net-mgmt/netsaint||2008-02-27|Has expired: Now developed as Nagios, see net-mgmt/nagios port net-mgmt/netsaint-plugins||2008-02-27|Has expired: Now developed as Nagios, see net-mgmt/nagios port games/ggo||2008-02-27|Has expired: developer's focus have moved elsewhere mail/claws-mail-etpan_privacy||2008-02-27|Has expired: no longer supported by developers x11-themes/indubstrial||2008-02-28|Has expired: yes x11-themes/gtk-smooth-engine||2008-02-28|Has expired: Redundant port (now included in gtk-engines), no release since 2005 security/amavis-perl||2008-02-28|Has expired: depends on misc/compat3x, which has security problems sysutils/cdbakeoven||2008-02-28|Has expired: Abandonware net/gnu-finger||2008-02-28|Has expired: no active development and known security vulnerabilities misc/seizedesktop||2008-02-28|Has expired: development stalled for years, outdated, unmaintained net-im/wildfire||2008-02-28|Has expired: Use net-im/openfire instead of this port www/gekko||2008-02-28|Has expired: This port is not being developed anymore. This was replaced by textmotion (http://code.google.com/p/textmotion/) www/gekko-modules||2008-02-28|Has expired: This port is not being developed anymore. This was replaced by textmotion (http://code.google.com/p/textmotion/) java/linux-blackdown-jre11||2008-02-28|Has expired: Obsolete version; support for Java 1.1 is to be removed from the ports tree french/pluxml||2008-02-28|Has expired: no active development and known security vulnerabilities, see http://www.securityfocus.com/bid/24607/info for details french/pluxml-theme-bridge||2008-02-28|Has expired: pluxml is marked as deprecated french/pluxml-theme-snowxml||2008-02-28|Has expired: pluxml is marked as deprecated databases/pgbash||2008-02-28|Has expired: Last release in 2003, relies on outdated PostgreSQL 7.3 and bash 2.05a audio/nogger||2008-02-28|Has expired: just makes a humming noise x11-wm/wmDeskGuide||2008-02-28|Has expired: Version branch long since retired ftp/axelq||2008-02-28|Has expired: Unmaintained, website disappeared lang/fpc-devel||2008-02-28|Has expired: now lags behind version in lang/fpc; use that instead devel/php-dbg||2008-02-28|Has expired: does not work with PHP 5 and does not compile on GCC 4.2 graphics/jgv||2008-02-28|Has expired: development stalled for years, outdated, unmaintained editors/muggy||2008-02-28|Has expired: development stalled for years, unmaintained x11-fm/binder||2008-02-28|Has expired: development stalled for years, outdated, unmaintained x11-toolkits/guile-gnome||2008-03-02|Software is obsolete security/openssh||2008-03-02|Has expired: Outdated and has security issues www/p5-FastCGI-ProcManager||2008-03-07|Duplicate of www/p5-FCGI-ProcManager x11/compositeext|x11/compositeproto|2008-03-07|Port has been outdated since X.Org 7.2 merge x11/damageext|x11/damageproto|2008-03-07|Port has been outdated since X.Org 7.2 merge x11/fixesext|x11/fixesproto|2008-03-07|Port has been outdated since X.Org 7.2 merge x11/panoramixext||2008-03-07|Port has been outdated since X.Org 7.2 merge x11/randrext|x11/randrproto|2008-03-07|Port has been outdated since X.Org 7.2 merge x11/renderext|x11/renderproto|2008-03-07|Port has been outdated since X.Org 7.2 merge x11/resourceext|x11/resourceproto|2008-03-07|Port has been outdated since X.Org 7.2 merge x11/xextensions||2008-03-07|Port has been outdated since X.Org 7.2 merge x11/printext|x11/printproto|2008-03-07|Port has been outdated since X.Org 7.2 merge x11/libXxf86||2008-03-07|Port has been outdated since X.Org 7.2 merge x11/xf86ext||2008-03-07|Port has been outdated since X.Org 7.2 merge devel/imake-4||2008-03-07|XFree86-4 is no longer supported on FreeBSD graphics/xfree86-dri||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11-fonts/XFree86-4-font100dpi||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11-fonts/XFree86-4-font75dpi||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11-fonts/XFree86-4-fontCyrillic||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11-fonts/XFree86-4-fontDefaultBitmaps||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11-fonts/XFree86-4-fontEncodings||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11-fonts/XFree86-4-fontScalable||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11-servers/XFree86-4-FontServer||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11-servers/XFree86-4-NestServer||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11-servers/XFree86-4-PrintServer||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11-servers/XFree86-4-Server||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11-servers/XFree86-4-VirtualFramebufferServer||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11/XFree86-4||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11/XFree86-4-clients||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11/XFree86-4-documents||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11/XFree86-4-libraries||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11/XFree86-4-manuals||2008-03-07|XFree86-4 is no longer supported on FreeBSD x11/ecore|devel/ecore|2008-03-12|Change category www/scout||2008-03-12|Has expired: Abandonware, website disappeared security/nmapfe|security/zenmap|2008-03-14|Project renamed x11/hs-x11-extras-ghc||2008-03-14|Has expired: Use x11/hs-x11-ghc instead www/mod_dosevasise20||2008-03-14|Has expired: Use www/mod_evasive20 instead devel/hc12mem|devel/hcs12mem|2008-03-17|Project renamed mail/claws-mail-maildir||2008-03-21|Has expired: no longer supported by developers x11/e17-module-devian||2008-03-21|Has expired: abandoned by developer x11/e17-module-engage||2008-03-21|Has expired: abandoned by developer x11/e17-module-eveil||2008-03-21|Has expired: abandoned by developer sysutils/hal-device-manager|sysutils/gnome-device-manager|2008-03-23|hal-device-manager has been retired security/gnome-keyring-manager|security/seahorse|2008-03-23|Functionality has been rolled into seahorse ports-mgmt/pkg_install-devel|ports-mgmt/pkg_install|2008-03-31|Port has been unmaintained for a few years x11-toolkits/qwt|x11-toolkits/qwt4|2008-04-02|Renamed for better naming x11-toolkits/qwt-devel|x11-toolkits/qwt5|2008-04-02|Renamed for better naming audio/csound-manual||2008-04-04|Merged with main port security/acid||2008-04-04|Has expired: development has ceased, use security/base archivers/deepforest||2008-04-09|Has expired: development stalled for years, outdated, unmaintained graphics/libimg-tkstep80||2008-04-09|Has expired: tkstep80 scheduled for expiration x11-toolkits/tkstep80||2008-04-09|Has expired: development stalled for years, outdated, unmaintained devel/p5-Tie-Watch|x11-toolkits/p5-Tk|2008-04-14|Bundled with p5-Tk games/teewars|games/teeworlds|2008-04-17|Project renamed multimedia/exportvideo||2008-04-21|Add-on for soon to be removed nuppelvideo port multimedia/nuppelvideo||2008-04-21|Unmaintained upstream for years. The nuppelvideo format is now supported by mencoder graphics/ascii0|graphics/asciio|2008-04-22|Renamed by delete+add misc/kde3-i18n-id||2008-04-25|Has expired: Distfile no longer available, outdated net/dhcp-agent||2008-04-25|Has expired: Dhcp-agent has not been updated since 2003, it does not build with guile-1.8, and it is unmaintained net/ocaml-netclient||2008-04-25|Has expired: is part of ocaml-net graphics/entice||2008-04-25|Has expired: Broken and unmaintained games/glpuzzle|games/jigzo|2008-04-28|Project renamed ftp/greed||2008-04-29|Has expired: No longer maintained x11-themes/gnome-industrial-theme||2008-04-29|Has expired: gnome-themes-extras no longer has industrial engine www/firefox15||2008-04-30|Has expired: Obsolete version, use Firefox 2.0 or greater instead www/phpadsnew||2008-04-30|Has expired: replaced by www/openx x11-wm/yawm||2008-04-30|Has expired: project no longer exists x11-wm/uwm||2008-04-30|Has expired: Version branch long since retired arabic/katoob||2008-04-30|Removed on maintainers request due to inactivity of project security/drupal4-ldap_integration||2008-04-30|Removed due to being broken and clearly not used ports-mgmt/instant-tinderbox||2008-05-07|No longer functional in the current infrastructure devel/swigruby||2008-05-11|Has expired: use devel/swig13 instead, last release was 8 years ago japanese/epson-ttfonts||2008-05-12|Removed because of extremely restrictive license x11-servers/xorg-printserver||2008-05-15|Has expired, software is obsolete www/mod_evasive20|www/mod_evasive|2008-05-17|No reason to have the 20 in the name, so remove it multimedia/smplayer-qt4||2008-05-17|Functionality is now included in smplayer devel/php-Net_Gearman|devel/pear-Net_Gearman|2008-05-19|Now it is a pear module devel/swig11||2008-05-21|Has expired: use devel/swig13 instead, last release of 1.1 was 8 years ago japanese/truetypefonts||2008-05-25|Removed due to copyright problem japanese/kochi-cidfonts||2008-05-25|Removed due to copyright problem japanese/latex-japanese|japanese/platex-japanese|2008-05-26|Works only with platex ports-mgmt/newportsversioncheck||2008-05-27|Obsoleted by portscout net-p2p/dclibc||2008-05-30|Has expired: Abandoned, not used, website disappeared multimedia/xfce4-xmms-controller-plugin||2008-05-30|Has expired: Project is dead www/pear-HTTP_Session||2008-05-30|Has expired: Use www/pear-HTTP_Session2 instead security/bioapitool||2008-05-30|Has expired: All functionality of these tools has been merged with pam_bsdbioapi japanese/motoya-ttfonts||2008-05-31|Removed because of extremely restrictive license devel/libffi-devel||2008-06-02|Has expired: Use devel/libffi instead www/mod_auth_pwcheck||2008-06-17|Depends on expired port, website disappeared security/cyrus-sasl||2008-06-17|Has expired: Unsupported, please move to cyrus-sasl2 converters/compface|mail/faces|2008-06-17|Removed in favor to mail/faces security/p5-openxpki-client-cli||2008-06-18|Has expired: no longer supported. Use p5-openxpki-client-html-mason instead audio/mbrola||2008-06-18|Has expired: relies on forbidden port misc/compat3x; last release 2000 emulators/linux-winetools||2008-06-18|Has expired: very old, discontinued, and replaced by emulators/wine-doors games/linux-x-plane||2008-06-18|Relies on expired, unfetchable installer port games/linux-x-plane-net-installer||2008-06-18|Has expired: unfetchable japanese/vje30||2008-06-18|Has expired: depends on forbidden port misc/compat3x math/umfpack||2008-06-18|Has expired: Outdated subset of math/suitesparse net/apache-soap||2008-06-18|Has expired: Development has been ceased, superseded by www/axis net/archie||2008-06-18|Has expired: No servers active anymore net/xarchie||2008-06-18|Has expired: No servers active anymore net/p5-Net-Z3950||2008-06-18|Has expired: does not compile with yaz 3.x, deprecated in favor of ZOOM-Perl (net/p5-Net-Z3950-ZOOM) net/vls||2008-06-18|Has expired: Does not build with current libdvbpsi. Development has been moved to multimedia/vlc net-mgmt/nsc||2008-06-18|Has expired: Project abandoned security/amavisd||2008-06-18|Has expired: depends on misc/compat3x, which has security problems; old version games/linux-goodway||2008-06-18|A tool for a port that was removed graphics/gtkcairo||2008-06-19|Unused, unfetchable, obsolete net/openospfd-devel||2008-06-19|Has expired: no longer maintained x11-servers/xorg-server-snap|x11-servers/xorg-server|2008-06-19|Has expired: no longer maintained archivers/dynamite|archivers/libdynamite|2008-06-22|Moved to archivers/libdynamite archivers/orange|archivers/liborange|2008-06-22|Moved to archivers/liborange security/barnyard-sguil6|security/barnyard-sguil|2008-06-22|Moved to security/barnyard-sguil java/bsh|lang/bsh|2008-06-22|Moved to lang/bsh www/mod_security2|www/mod_security21|2008-06-22|Moved to www/mod_security2 devel/dumb|audio/dumb|2008-06-23|Moved to a better category security/ca-roots||2008-06-29|No longer supported by FreeBSD Security Officer devel/subversion-perl|devel/p5-subversion|2008-06-30|Rename to reflect official Perl modules naming scheme devel/subversion-python|devel/py-subversion|2008-06-30|Rename to reflect official Python modules naming scheme devel/subversion-ruby|devel/ruby-subversion|2008-06-30|Rename to reflect official Ruby modules naming scheme misc/goblin|math/goblin|2008-06-30|Moved to a better category editors/openoffice.org-1.0||2008-07-02|Removed editors/openoffice.org-1.1||2008-07-02|Removed editors/openoffice.org-1.1-devel||2008-07-02|Removed deskutils/gdeskcal||2008-07-03|Disappeared from master site deskutils/gdeskcal-skins||2008-07-03|Disappeared from master site deskutils/gnome-menu-editor||2008-07-03|Disappeared from master site and take over by alacarte textproc/dictum-emacs22||2008-07-05|Assimilated into textproc/dictum sysutils/gnu-unifont|x11-fonts/gnu-unifont|2008-07-05|Category change chinese/links||2008-07-05|Has been ignored for 15 months net-im/psi-gentoo||2008-07-11|Removed because no longer supported lang/yarv|lang/ruby19|2008-07-11|Officially released as Ruby 1.9 japanese/samba|japanese/samba3|2008-07-21|Superseded by japanese/samba3 net/silky||2008-07-21|Broken with newer silc-toolkit version japanese/kterm16c|japanese/kterm|2008-07-24|Deprecated in favor of japanese/kterm lang/gambc|lang/gambit-c|2008-07-24|Port was renamed devel/legoctl|devel/roboctl|2008-07-26|Port was renamed games/ssamtse|games/linux-ssamtse|2008-07-26|Upgraded to Linux version of the game palm/synce-rra|palm/synce-librra|2008-07-27|Port was renamed palm/synce-dccm|palm/synce-vdccm|2008-07-27|Port was renamed arabic/php_doc||2008-08-04|Manual in this language was removed chinese/php_doc-hk||2008-08-04|Manual in this language was removed chinese/php_doc-tw||2008-08-04|Manual in this language was removed chinese/php_doc-zh||2008-08-04|Manual in this language was removed hungarian/php_doc||2008-08-04|Manual in this language was removed mbone/rtpmon||2008-08-16|Abandoned upstream and needs gcc32 which is going to be removed games/ssc||2008-08-16|Abandoned upstream and needs gcc32 which is going to be removed mail/mutt-ng||2008-08-18|Has expired: Abandoned by upstream maintainers; use mail/mutt-devel x11-wm/heliodor||2008-08-18|No longer supported -- use compiz x11-wm/beryl||2008-08-18|Has expired: No longer supported -- use compiz x11-wm/beryl-core||2008-08-18|Has expired: No longer supported -- use compiz x11-wm/beryl-manager||2008-08-18|Has expired: No longer supported -- use compiz x11-wm/beryl-plugins||2008-08-18|Has expired: No longer supported -- use compiz x11-wm/beryl-plugins-unsupported||2008-08-18|Has expired: No longer supported -- use compiz x11-wm/beryl-settings||2008-08-18|Has expired: No longer supported -- use compiz x11-wm/beryl-settings-bindings||2008-08-18|Has expired: No longer supported -- use compiz japanese/lyx|print/lyx|2008-08-18|No longer maintained and print/lyx now supports Unicode japanese/lyx-doc||2008-08-18|Obsolete games/blobandconquer||2008-08-20|Removed due to copyright problems games/randomshooter||2008-08-20|Removed due to copyright problems devel/autoconf261|devel/autoconf262|2008-08-20|Migration to autoconf-2.62 x11-themes/enlightenment-theme-BlueSteel||2008-08-20|Deprecated by x11-themes/e16-themes x11-themes/enlightenment-theme-BrushedMetal-Tigert||2008-08-20|Deprecated by x11-themes/e16-themes x11-themes/enlightenment-theme-Ganymede||2008-08-20|Deprecated by x11-themes/e16-themes x11-themes/enlightenment-theme-ShinyMetal||2008-08-20|Deprecated by x11-themes/e16-themes www/mediawiki17||2008-08-22|Expired, use www/mediawiki instead www/mediawiki18||2008-08-22|Expired, use www/mediawiki instead x11-wm/9wm||2008-08-22|Has expired: Project is dead, last release from 2002 x11-wm/gwm||2008-08-22|Has expired: Project is dead x11-wm/mlvwm||2008-08-22|Has expired: Project is dead x11-wm/novawm||2008-08-22|Has expired: Project is dead x11-wm/orion||2008-08-22|Has expired: Version branch long since retired x11-wm/ude||2008-08-22|Has expired: Remove dead project lang/gcc32|lang/gcc42|2008-08-23|Abandoned upstream more than five years ago; superseded by lang/gcc42 and later irc/iip||2008-08-24|Abandonware, long since deprecated www/mediawiki19||2008-08-26|Expired, use www/mediawiki instead www/mediawiki110||2008-08-26|Expired, use www/mediawiki instead www/mediawiki111||2008-08-26|Expired, use www/mediawiki instead graphics/openproducer||2008-08-27|Now included in graphics/osg devel/openthreads||2008-08-27|Now included in graphics/osg www/cherokee-devel||2008-08-27|Removed, use www/cherokee instead irc/tirc||2008-08-28|Has expired: Project is dead x11-toolkits/gtkdatabox2||2008-08-29|Removed, use x11-toolkits/gtkdatabox instead chinese/BBMan||2008-08-30|Removed, abandoned by upstream maintainer games/q3base||2008-09-01|Project gone, website defaced editors/ooo-build||2008-09-01|Has expired: Has been broken for more than 6 months mail/pine4|mail/alpine|2008-09-01|No further development for pine, alpine has more features and is config-compatible editors/pico|editors/pico-alpine|2008-09-01|No further development for pine, alpine has more features and is config-compatible print/ghostscript-gnu|print/ghostscript7|2008-09-05|Renamed for better naming print/ghostscript-gnu-nox11|print/ghostscript7-nox11|2008-09-05|Renamed for better naming print/ghostscript-gnu-commfont|print/ghostscript7-commfont|2008-09-05|Renamed for better naming japanese/ghostscript-gnu-jpnfont|print/ghostscript7-jpnfont|2008-09-05|Renamed for better naming korean/ghostscript-gnu-korfont|print/ghostscript7-korfont|2008-09-05|Renamed for better naming print/ghostscript-gpl-nox11|print/ghostscript8-nox11|2008-09-05|Renamed for better naming chinese/acroread-zh_CN|chinese/acroread8-zh_CN|2008-09-06|Removed because of security vulnerability chinese/acroread-zh_TW|chinese/acroread8-zh_TW|2008-09-06|Removed because of security vulnerability french/acroread|french/acroread8|2008-09-06|Removed because of security vulnerability german/acroread|german/acroread8|2008-09-06|Removed because of security vulnerability japanese/acroread|japanese/acroread8|2008-09-06|Removed because of security vulnerability korean/acroread|korean/acroread8|2008-09-06|Removed because of security vulnerability portuguese/acroread|portuguese/acroread8|2008-09-06|Removed because of security vulnerability print/acroread7|print/acroread8|2008-09-06|Removed because of security vulnerability print/dk-acroread|print/dk-acroread8|2008-09-06|Removed because of security vulnerability print/es-acroread|print/es-acroread8|2008-09-06|Removed because of security vulnerability print/fi-acroread|print/fi-acroread8|2008-09-06|Removed because of security vulnerability print/it-acroread|print/it-acroread8|2008-09-06|Removed because of security vulnerability print/nl-acroread|print/nl-acroread8|2008-09-06|Removed because of security vulnerability print/no-acroread|print/no-acroread8|2008-09-06|Removed because of security vulnerability print/sv-acroread|print/sv-acroread8|2008-09-06|Removed because of security vulnerability net/py-zsi-devel||2008-09-07|Removed in favor of py-zsi audio/squeezecenter-transitionupdater||2008-09-07|Plugin integrated in to SqueezeCenter 7.1 japanese/xjman||2008-10-05|No longer maintained japanese/xjman-3||2008-10-05|No longer maintained net/isc-dhcp3-server|net/isc-dhcp30-server|2008-10-13|Swap to multiple versions net/isc-dhcp3-relay|net/isc-dhcp30-relay|2008-10-13|Swap to multiple versions net/isc-dhcp3-client|net/isc-dhcp30-client|2008-10-13|Swap to multiple versions japanese/sj3|japanese/sj3-server|2008-10-26|Renamed for -server/-lib separation japanese/Canna|japanese/canna-server|2008-10-26|Renamed for -server/-lib separation japanese/kinput2-canna|japanese/kinput2|2008-10-26|Integrated into japanese/kinput2 japanese/kinput2-canna+freewnn|japanese/kinput2|2008-10-26|Integrated into japanese/kinput2 japanese/kinput2-canna+freewnn+sj3|japanese/kinput2|2008-10-26|Integrated into japanese/kinput2 japanese/kinput2-canna+sj3|japanese/kinput2|2008-10-26|Integrated into japanese/kinput2 japanese/kinput2-canna+sj3+wnn6|japanese/kinput2|2008-10-26|Integrated into japanese/kinput2 japanese/kinput2-canna+sj3+wnn7|japanese/kinput2|2008-10-26|Integrated into japanese/kinput2 japanese/kinput2-canna+wnn6|japanese/kinput2|2008-10-26|Integrated into japanese/kinput2 japanese/kinput2-canna+wnn7|japanese/kinput2|2008-10-26|Integrated into japanese/kinput2 japanese/kinput2-freewnn|japanese/kinput2|2008-10-26|Integrated into japanese/kinput2 japanese/kinput2-freewnn+sj3|japanese/kinput2|2008-10-26|Integrated into japanese/kinput2 japanese/kinput2-sj3|japanese/kinput2|2008-10-26|Integrated into japanese/kinput2 japanese/kinput2-sj3+wnn6|japanese/kinput2|2008-10-26|Integrated into japanese/kinput2 japanese/kinput2-sj3+wnn7|japanese/kinput2|2008-10-26|Integrated into japanese/kinput2 japanese/kinput2-wnn6|japanese/kinput2|2008-10-26|Integrated into japanese/kinput2 japanese/kinput2-wnn7|japanese/kinput2|2008-10-26|Integrated into japanese/kinput2 japanese/onew-canna|japanese/onew|2008-10-26|Integrated into japanese/onew japanese/onew-canna+freewnn|japanese/onew|2008-10-26|Integrated into japanese/onew japanese/onew-canna+wnn6|japanese/onew|2008-10-26|Integrated into japanese/onew japanese/onew-canna+wnn7|japanese/onew|2008-10-26|Integrated into japanese/onew japanese/onew-freewnn|japanese/onew|2008-10-26|Integrated into japanese/onew japanese/onew-wnn6|japanese/onew|2008-10-26|Integrated into japanese/onew japanese/onew-wnn7|japanese/onew|2008-10-26|Integrated into japanese/onew japanese/jvim||2008-10-26|Removed: no longer maintained japanese/jvim-canna||2008-10-26|Removed: no longer maintained japanese/jvim-canna+freewnn||2008-10-26|Removed: no longer maintained japanese/jvim-canna+wnn6||2008-10-26|Removed: no longer maintained japanese/jvim-canna+wnn7||2008-10-26|Removed: no longer maintained japanese/jvim-freewnn||2008-10-26|Removed: no longer maintained japanese/jvim-wnn6||2008-10-26|Removed: no longer maintained japanese/jvim-wnn7||2008-10-26|Removed: no longer maintained japanese/jvim3-canna|japanese/jvim3|2008-10-28|Integrated into japanese/jvim3 japanese/jvim3-canna+freewnn|japanese/jvim3|2008-10-28|Integrated into japanese/jvim3 japanese/jvim3-canna+wnn6|japanese/jvim3|2008-10-28|Integrated into japanese/jvim3 japanese/jvim3-canna+wnn7|japanese/jvim3|2008-10-28|Integrated into japanese/jvim3 japanese/jvim3-direct_canna|japanese/jvim3|2008-10-28|Integrated into japanese/jvim3 japanese/jvim3-freewnn|japanese/jvim3|2008-10-28|Integrated into japanese/jvim3 japanese/jvim3-wnn6|japanese/jvim3|2008-10-28|Integrated into japanese/jvim3 japanese/jvim3-wnn7|japanese/jvim3|2008-10-28|Integrated into japanese/jvim3 security/libfwbuilder2|security/libfwbuilder|2008-11-05|Replaced by libfwbuilder 3.0 security/fwbuilder2|security/fwbuilder|2008-11-05|Replaced by fwbuilder 3.0 japanese/magicpoint|misc/magicpoint|2008-11-07|Integrated into misc/magicpoint databases/firebird2-client|databases/firebird20-client|2008-11-24|Renamed databases/firebird2-server|databases/firebird20-server|2008-11-24|Renamed emulators/linux_base-gentoo-stage2||2008-11-24|Removed emulators/linux_dist-gentoo-stage2||2008-11-24|Removed mail/libspf-alt||2008-12-03|Removed portuguese/aspell|portuguese/aspell-pt_PT|2008-12-07|Repocopy finished for proper package naming x11-wm/kahakai||2008-12-07|Has expired: Development ceased palm/synce-gnomevfs||2008-12-07|Has expired: No longer supported by developers palm/synce-kde||2008-12-07|Has expired: No longer supported by developers palm/synce-multisync||2008-12-07|Has expired: No longer supported by developers sysutils/dtc-toaster||2008-12-07|Has expired: Has been broken for more than 6 months sysutils/dusage||2008-12-07|Has expired: Has been broken for more than 6 months games/linux-alienarena||2008-12-07|Has expired: Has been broken for more than 6 months japanese/escpf||2008-12-07|Has expired: Has been broken for more than 6 months java/java-gcj-compat||2008-12-07|Has expired: Has been broken for more than 6 months lang/screamer||2008-12-07|Has expired: Has been broken for more than 6 months misc/documancer||2008-12-07|Has expired: Unmaintained upstream multimedia/manslide||2008-12-07|Has expired: Use multimedia/smile instead net/globus4||2008-12-07|Has expired: Has been broken for more than 6 months net/p5-Parallel-MPI||2008-12-07|Has expired: Has been broken for more than 6 months net/p54u||2008-12-07|Has expired: website disappeared net-im/ginsu||2008-12-07|Has expired: Has been broken for more than 6 months net-p2p/py-kenosis-bittorrent||2008-12-07|Has expired: Has been broken for more than 6 months sysutils/sjog||2008-12-07|Has expired: Has been broken for more than 6 months textproc/Ebnf2ps||2008-12-07|Has expired: Has been broken for more than 6 months www/roxen||2008-12-07|Has expired: Has been broken for more than 6 months x11-fm/evidence||2008-12-07|Has expired: Has been broken for more than 6 months www/yui||2008-12-09|Already exists as www/yahoo-ui security/pecl-filter|security/php5-filter|2008-12-11|Now bundled in php5 math/py-numeric17||2008-12-12|Old obsolete version devel/hs-buddha||2008-12-13|Has expired: Has been broken for more than 6 months devel/hs-tclhaskell-ghc||2008-12-13|Has expired: Has been broken for more than 6 months devel/pear-apd||2008-12-13|Has expired: Has been broken for more than 6 months databases/py-tada||2008-12-13|Has expired: Has been broken for more than 6 months databases/qdbm-java||2008-12-13|Has expired: Has been broken for more than 6 months audio/shellac||2008-12-13|Has expired: Has been broken for more than 6 months audio/snett||2008-12-13|Has expired: Has been broken for more than 6 months x11-wm/alloywm||2008-12-13|Has expired: Has been broken for more than 6 months, upstream disappeared x11/9term||2008-12-13|Has expired: depends on expired port textproc/rubygem-spreadsheet-excel|textproc/rubygem-spreadsheet|2008-12-14|Project renamed textproc/hs-utf8-string||2008-12-19|Duplicate of devel/hs-utf8-string-ghc audio/euphoria||2008-12-19|Has been broken or ignored for past 24 months, depends on broken, expired port audio/ruby-xmms2-ecore||2008-12-19|Has expired: Has been broken for more than 6 months databases/p5-DBD-PgSPI||2008-12-19|Has expired: Has been broken for more than 6 months databases/mysql-query-browser||2008-12-19|Has expired: Has been broken for more than 6 months, abandoned upstream games/clanbomber||2008-12-19|Has expired: Has been broken for more than 6 months graphics/gstreamer-plugins-swfdec||2008-12-19|Has expired: Has been broken for more than 6 months irc/erc||2008-12-19|Has expired: Has been broken for more than 6 months lang/chameleon||2008-12-19|Has expired: Has been broken for more than 6 months math/ses||2008-12-19|Has expired: Has been broken for more than 6 months x11-toolkits/p5-qt||2008-12-19|Has expired: Has been broken for more than 6 months www/phpSysInfo||2008-12-24|Split into www/phpsysinfo and www/phpsysinfo-dev japanese/msdosfs||2008-12-28|Removed: only for 5.x korean/msdosfs||2008-12-28|Removed: only for 5.x security/openssl-stable|security/openssl|2008-12-30|Removed: only for 6.0 dns/bind9-dlz|dns/bind94|2008-12-31|DLZ patches are now in bind 9.4 distribution x11-drivers/xf86-video-i810|x11-drivers/xf86-video-intel|2009-01-05|Replaced by the xf86-video-intel driver misc/utf8locale||2009-01-05|Part of the base system since FreeBSD 5.3 lang/gcc41-withgcjawt||2009-01-06|Removed java/gjdoc||2009-01-06|Removed java/ecj-bootstrap||2009-01-06|Removed emulators/mupen64plus-sound||2009-01-06|No supported anymore by mupen64plus team misc/heyu||2009-01-07|Has expired: no longer under development, use misc/heyu2 sysutils/pkill||2009-01-07|Part of the base system since FreeBSD 5.3 ports-mgmt/portsnap||2009-01-07|Part of the base system since FreeBSD 5.5 lang/py-compiler||2009-01-08|Included with Python since 2.2 net/nvnet||2009-01-08|Part of the base system since FreeBSD 6.0 security/openssl-beta|security/openssl|2009-01-09|Removed accessibility/gail|x11-toolkits/gtk20|2009-01-10|Now included with Gtk20 accessibility/gail-reference|x11-toolkits/gtk20-reference|2009-01-10|Now included with Gtk20 x11/fast-user-switch-applet|x11/gdm|2009-01-10|This is now part of GDM net-mgmt/bsnmpd||2009-01-10|Part of the base system since FreeBSD 6.0 devel/cogito||2009-01-11|Broken and abandoned upstream net-mgmt/hobbit-client|net-mgmt/xymon-client|2009-01-11|Renamed net-mgmt/hobbit-server|net-mgmt/xymon-server|2009-01-11|Renamed science/gchempaint|science/gchemutils|2009-01-13|gchempaint was integrated into gchemutils net/fpc-libasync|devel/fpc-fcl-async|2009-01-13|This unit was renamed x11-toolkits/forms|x11-toolkits/xforms|2009-01-13|This unit was renamed x11-toolkits/gtk|x11-toolkits/gtk12|2009-01-13|This unit was renamed devel/fpc-gconf||2009-01-13|This is now part of fpc-gnome1 x11-toolkits/fpc-zvt||2009-01-13|This is now part of fpc-gnome1 net/fpc-netdb||2009-01-13|This is now part of fpc-fcl-net textproc/p5-Text-CSV_PP||2009-01-14|Has expired: textproc/Text-CSV_PP was merged into textproc/p5-Text-CSV games/fgfs-base|games/flightgear-data|2009-01-15|Renamed lang/gcc41|lang/gcc42|2009-01-17|Abandoned upstream, superseded by gcc42 and, preferably, gcc43 devel/apr-svn|devel/apr|2009-01-18|Only needed for FreeBSD 5.2 and below for threading math/elmer-mathlibs||2009-01-18|Removed textproc/py-wbxml||2009-01-19|Expired: No longer supported by developers mail/claws-mail-smime|mail/claws-mail|2009-01-19|The SMIME plugin is included in the main port via the GPGME option now www/fpc-httpd||2009-01-19|Split into www/fpc-httpd13, www/fpc-httpd20, and www/fpc-httpd22 multimedia/vlc-devel||2009-01-19|Removed: merged into multimedia/vlc textproc/nltk_lite||2009-01-21|Removed x11-toolkits/fox10||2009-01-21|Removed deprecated port, use x11-toolkits/fox16 instead x11-toolkits/fxscintilla-fox10||2009-01-21|Removed deprecated port, use x11-toolkits/fxscintilla instead x11-toolkits/py-fox||2009-01-21|Removed deprecated port, has a broken dependency x11-toolkits/ruby-fox10||2009-01-21|Removed deprecated port, use x11-toolkits/ruby-fox16 instead devel/linux-glib2||2009-01-21|Removed since the port is incorporated into all Linux base ports x11/xorg-protos||2009-01-23|Not really necessary x11-drivers/synaptics|x11-drivers/xf86-input-synaptics|2009-01-23|Now an official X.Org driver lang/gcc28|lang/gcc42|2009-01-24|Abandoned upstream, superseded by gcc42 and, preferably, gcc43 x11/xphelloworld||2009-01-24|Xprint application, deprecated upstream x11/xclock|x11-clocks/xclock|2009-01-28|Moved to a more appropriate category lang/perl5|lang/perl5.6|2009-02-01|Renamed devel/libmcve|devel/libmonetra|2009-02-01|Project renamed misc/gnomesword|misc/xiphos|2009-02-02|Project renamed www/aolserver-nscache||2009-02-03|Removed games/emacs-chess||2009-02-03|Has expired: has been broken for more than 6 months devel/subversion-devel||2009-02-03|Has expired: Use devel/subversion or devel/subversion-freebsd instead of this port devel/hs-hpl||2009-02-03|Has expired: has been broken for more than 6 months mail/claws-mail-clamav||2009-02-03|Has expired: has been broken for more than 6 months mail/sylpheed2-devel||2009-02-03|Has expired: has been broken for more than 6 months www/pecl-mnogosearch||2009-02-03|Has expired: has been broken for more than 6 months x11-fonts/mathfonts||2009-02-03|Has expired: This port was supported by Mozilla 1.8 (including Firefox 2.0) - to be replaced by STIX fonts for Firefox 3.x x11-wm/fluxspace||2009-02-03|Has expired: has been broken for more than 6 months x11-wm/expocity||2009-02-03|Has expired: project has been abandoned x11/bbuname||2009-02-03|Has expired: has been broken for more than 6 months security/squidclam||2009-02-03|Has expired: has been broken for more than 6 months print/virtualpaper||2009-02-03|Has expired: depends on broken, expired port print/ifhp||2009-02-03|Has expired: has been broken for more than 6 months net-p2p/peercast||2009-02-03|Has expired: has been forbidden for more than 6 months palm/pdbc||2009-02-03|Has expired: has been broken for more than 6 months net-mgmt/NeTraMet||2009-02-03|Has expired: has been broken for more than 6 months net-im/sulci||2009-02-03|Has expired: has been broken for more than 6 months multimedia/mjpegtools-yuvfilters||2009-02-03|Has expired: has been broken for more than 6 months multimedia/helixplayer||2009-02-03|Has expired: has been broken for more than 6 months misc/pybliographer||2009-02-03|Has expired: has been broken for more than 6 months net/versuch||2009-02-03|Has expired: has been broken for more than 6 months net/py-mantissa||2009-02-03|Has expired: has been broken for more than 6 months net/libunpipc||2009-02-03|Has expired: has been broken for more than 6 months net/gnometelnet||2009-02-03|Has expired: has been broken for more than 6 months net/gacxtool||2009-02-03|Has expired: depends on expired, broken port devel/py-coro||2009-02-03|Has expired: has been broken for more than 6 months chinese/stardict2-dict-zh_TW||2009-02-03|Has expired: has been broken for more than 6 months x11-themes/gtk-industrial-theme||2009-02-03|Has expired: has been broken for more than 6 months sysutils/srmt||2009-02-07|Moved into archivers/star devel/libslang|devel/libslang2|2009-02-07|Abandoned upstream, replaced by devel/libslang2 graphics/processing-devel|graphics/processing|2009-02-09|Retire, as non-devel port was updated to newer version audio/xmms-imms||2009-02-13|Has expired: does not configure or build devel/libgnugetopt||2009-02-13|Has expired: was only relevant on FreeBSD 4.x games/planeshift||2009-02-13|Has expired: Depends on broken, expired port net-mgmt/nfsen-devel||2009-02-13|Has expired: no separate development version exists anymore www/ocaml-wdialog||2009-02-13|Has expired: has been broken for more than 6 months news/sabnzbd||2009-02-13|Has expired: no longer developed, use news/sabnzbdplus instead devel/erlslang||2009-02-14|Broken with libslang2; no upstream development mail/py-pyclamd|security/py-pyclamd|2009-02-14|Category change deskutils/zbgset|deskutils/p5-ZConf-BGSet|2009-02-15|Integrated into deskutils/p5-ZConf-BGSet deskutils/zbgset-admin|deskutils/p5-ZConf-BGSet|2009-02-15|Integrated into deskutils/p5-ZConf-BGSet net/samba32-devel|net/samba32|2009-02-16|Samba 3.2 became stable enough to be used in production editors/sam||2009-02-19|Has expired: distfile and homepage disappeared math/slsc||2009-02-28|Has expired: No longer maintained by author finance/eqonomize|finance/eqonomize-kde3|2009-03-02|Use finance/eqonomize-kde3 x11/libxfce4mcs||2009-03-02|Got obsolete by Xfce 4.6 update sysutils/xfce4-mcs-manager||2009-03-02|Got obsolete by Xfce 4.6 update sysutils/xfce4-mcs-plugins||2009-03-02|Got obsolete by Xfce 4.6 update x11-themes/xfce4-icon-theme||2009-03-02|Got obsolete by Xfce 4.6 update x11-toolkits/scx||2009-03-06|Abandoned upstream x11-toolkits/xg||2009-03-06|Abandoned upstream audio/quelcom||2009-03-07|Abandoned upstream, requires obsolete version of GCC math/cxsc||2009-03-07|Abandoned upstream, requires obsolete version of GCC devel/prcs||2009-03-07|Abandoned upstream, requires obsolete version of GCC devel/tvision||2009-03-07|Abandoned upstream, requires obsolete version of GCC textproc/latte||2009-03-07|Abandoned upstream, requires obsolete version of GCC textproc/nicetext||2009-03-07|Abandoned upstream, requires obsolete version of GCC multimedia/libspiff|multimedia/libxspf|2009-03-08|Project renamed graphics/libgdgeda||2009-03-09|Has expired: is not required anymore japanese/ruby-tk||2009-03-09|Has expired: uses old Tk, not required with newer versions www/p5-Cookie-XS|www/p5-CGI-Cookie-XS|2009-03-09|Renamed databases/rubygem-rrdtool||2009-03-09|Has expired: port no longer maintained upstream; use rrdtools' own Ruby bindings instead graphics/crystalentitylayer-devel||2009-03-09|Has expired: Depends on broken, expired port graphics/crystalspace-devel||2009-03-09|Has expired: Has been broken for more than 6 months ftp/downloader||2009-03-09|Has expired: sources unavailable - website disappeared devel/rubygem-mojombo-grit||2009-03-09|Has expired: Obsolete, use devel/rubygem-grit instead mail/postfix1||2009-03-09|Has expired: Not supported anymore by vendor. Please choose a new one version mail/postfix21||2009-03-09|Has expired: Not supported anymore by vendor. Please choose a new one version mail/postfix22||2009-03-09|Has expired: Not supported anymore by vendor. Please choose a new one version www/rubygem-actionwebservice||2009-03-09|Has expired: from rails 2.0 www/rubygem-rails use www/rubygem-activeresource instead x11-toolkits/inti-gconf||2009-03-09|Has expired: unmaintained upstream for more than five years; no ports depend on it x11-toolkits/inti-gl||2009-03-09|Has expired: unmaintained upstream for more than five years; no ports depend on it x11-toolkits/inti-sourceview||2009-03-09|Has expired: unmaintained upstream for more than five years; no ports depend on it misc/git|misc/gnuit|2009-03-14|Renamed lang/gcc33|lang/gcc43|2009-03-14|Abandoned upstream, superseded by later versions sysutils/libisoburn|sysutils/xorriso|2009-03-16|Project was renamed games/PySolFC|games/pysolfc|2009-03-19|Port renamed net-im/ruby-xmpp4r|net-im/rubygem-xmpp4r|2009-03-21|Renamed audio/rhythmbox-devel|audio/rhythmbox|2009-03-21|Main port updated to the latest stable version net/penguintv-devel||2009-03-23|Main port updated to the latest stable version x11/oclock|x11-clocks/oclock|2009-03-23|Moved to a more appropriate category www/p5-Catalyst-Plugin-Authentication-Store-DBIx-Class||2009-03-23|Removed emulators/dlx||2009-03-23|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months java/javel||2009-03-23|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months java/guavac||2009-03-23|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months graphics/xrml||2009-03-23|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months graphics/renderpark||2009-03-23|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months irc/blackened||2009-03-23|Has expired: Broken and abandonware devel/libg++||2009-03-23|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months devel/freescope||2009-03-23|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months misc/menushki||2009-03-23|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months misc/vbidecode||2009-03-23|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months lang/wamcc||2009-03-23|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months multimedia/mpegedit||2009-03-23|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months mail/dkimap4||2009-03-23|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months net-mgmt/oproute||2009-03-23|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months x11/tkgoodstuff||2009-03-23|Has expired: Tcl 8.0 support is going to be dropped x11-toolkits/inti||2009-03-23|Has expired: unmaintained upstream for more than five years; no ports depend on it mbone/nte||2009-03-23|Has expired: Tcl 8.0 support is going to be dropped mbone/relate||2009-03-23|Has expired: Tcl 8.0 support is going to be dropped mbone/wbd||2009-03-23|Has expired: Tcl 8.0 support is going to be dropped comms/plp||2009-03-24|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months devel/ruby-zoom|devel/rubygem-zoom|2009-03-26|Renamed net/sipxcalllib||2009-03-28|Has expired: old version, needs updating net/sipxcommserverlib||2009-03-28|Has expired: old version, needs updating, and does not compile net/sipxconfig||2009-03-28|Has expired: depends on broken port net/sipxcommserverlib net/sipxmediaadapterlib||2009-03-28|Has expired: old version, needs updating net/sipxmedialib||2009-03-28|Has expired: old version, needs updating net/sipxpbx||2009-03-28|Has expired: depends on broken port net/sipxcommserverlib net/sipxproxy||2009-03-28|Has expired: depends on broken port net/sipxcommserverlib net/sipxportlib||2009-03-28|Has expired: old version, needs updating net/sipxpublisher||2009-03-28|Has expired: depends on broken port net/sipxcommserverlib net/sipxregistry||2009-03-28|Has expired: depends on broken port net/sipxcommserverlib net/sipxtacklib||2009-03-28|Has expired: old version, needs updating net/sipxvxml||2009-03-28|Has expired: old version, needs updating www/drupal4-attachment||2009-04-04|Has expired: Drupal 4.7.x is end-of-life since 200802. Please migrate to Drupal 6.x www/drupal4-filemanager||2009-04-04|Has expired: Drupal 4.7.x is end-of-life since 200802. Please migrate to Drupal 6.x www/drupal4-gsitemap||2009-04-04|Has expired: Drupal 4.7.x is end-of-life since 200802. Please migrate to Drupal 6.x www/drupal4-i18n||2009-04-04|Has expired: Drupal 4.7.x is end-of-life since 200802. Please migrate to Drupal 6.x www/drupal4-nice_menus||2009-04-04|Has expired: Drupal 4.7.x is end-of-life since 200802. Please migrate to Drupal 6.x www/drupal4-taxonomy_access||2009-04-04|Has expired: Drupal 4.7.x is end-of-life since 200802. Please migrate to Drupal 6.x www/drupal4-textile||2009-04-04|Has expired: Drupal 4.7.x is end-of-life since 200802. Please migrate to Drupal 6.x www/drupal4||2009-04-04|Has expired: Drupal 4.7.x is end-of-life since 200802. Please migrate to Drupal 6.x www/squid26||2009-04-04|Has expired: The 2.6 series is no longer actively maintained by the Squid developers x11-themes/camaelon-nesedah||2009-04-04|Has expired: now included in camaelon x11-wm/compiz-fusion-plugins-main|x11-wm/compiz-plugins-main|2009-04-08|Dropping the fusion name x11-wm/compiz-fusion-plugins-extra|x11-wm/compiz-plugins-extra|2009-04-08|Dropping the fusion name x11-wm/compiz-fusion-plugins-unsupported|x11-wm/compiz-plugins-unsupported|2009-04-08|Dropping the fusion name devel/gnome-build||2009-04-10|This port has been merged into Anjuta and is now obsolete sysutils/gnome-volume-manager||2009-04-10|This port has been obsoleted by Nautilus science/oof||2009-04-11|Has expired: Broken with GCC 4.2 and beyond www/raqdevil||2009-04-11|Has expired: Master site gone, distfiles not fetchable devel/arm-rtems-g77|devel/arm-rtems-gcc|2009-04-11|Has expired: use arm-rtems-gcc instead devel/arm-rtems-objc|devel/arm-rtems-gcc|2009-04-11|Has expired: use arm-rtems-gcc instead devel/i386-rtems-g77|devel/i386-rtems-gcc|2009-04-11|Has expired: use i386-rtems-gcc instead devel/i386-rtems-objc|devel/i386-rtems-gcc|2009-04-11|Has expired: use i386-rtems-gcc instead devel/i960-rtems-binutils||2009-04-11|Has expired: abandoned by mainstream devel/i960-rtems-gcc||2009-04-11|Has expired: abandoned by mainstream devel/i960-rtems-gdb||2009-04-11|Has expired: abandoned by mainstream devel/m68k-rtems-g77|devel/m68k-rtems-gcc|2009-04-11|Has expired: use m68k-rtems-gcc instead devel/m68k-rtems-objc|devel/m68k-rtems-gcc|2009-04-11|Has expired: use m68k-rtems-gcc instead devel/mips-rtems-g77|devel/mips-rtems-gcc|2009-04-11|Has expired: use mips-rtems-gcc instead devel/mips-rtems-objc|devel/mips-rtems-gcc|2009-04-11|Has expired: use mips-rtems-gcc instead devel/powerpc-rtems-g77|devel/powerpc-rtems-gcc|2009-04-11|Has expired: use powerpc-rtems-gcc instead devel/powerpc-rtems-objc|devel/powerpc-rtems-gcc|2009-04-11|Has expired: use powerpc-rtems-gcc instead devel/sh-rtems-g77|devel/sh-rtems-gcc|2009-04-11|Has expired: use sh-rtems-gcc instead devel/sh-rtems-objc|devel/sh-rtems-gcc|2009-04-11|Has expired: use sh-rtems-gcc instead devel/sparc-rtems-g77|devel/sparc-rtems-gcc|2009-04-11|Has expired: use sparc-rtems-gcc instead devel/sparc-rtems-objc|devel/sparc-rtems-gcc|2009-04-11|Has expired: use sparc-rtems-gcc instead polish/gnugadu|polish/gnugadu2|2009-04-11|Has expired: Not developed anymore, unmaintained security/cutlass||2009-04-11|Has expired: does not work with current version of security/botan www/rt2|www/rt38|2009-04-11|Obsolete version, use www/rt38 instead www/rt32|www/rt38|2009-04-11|Obsolete version, use www/rt38 instead www/rt34|www/rt38|2009-04-11|Obsolete version, use www/rt38 instead www/mod_snake||2009-04-12|Doesn't compile; abandoned upstream since 2002 www/mod_mya||2009-04-13|Depends on broken databases/mysql323-client www/mod_mysqluserdir||2009-04-13|Depends on broken databases/mysql323-client x11/nvidia-driver-71xx|x11/nvidia-driver-71|2009-04-13|Renamed x11/nvidia-driver-96xx|x11/nvidia-driver-96|2009-04-13|Renamed emulators/cpmtools27|emulators/cpmtools2|2009-04-25|Renamed games/chromium|games/chromium-bsu|2009-04-26|Renamed russian/xneur|deskutils/xneur|2009-04-27|Better category: supports many languages audio/rubygem-mp3info|audio/rubygem-ruby-mp3info|2009-04-28|Updated to match GEM name, use rubygem-ruby-mp3info instead sysutils/linux-megacli2|sysutils/linux-megacli|2009-04-30|Folded into unversioned port directory net/vnstati|net/vnstat|2009-04-30|Use net/vnstat audio/snowstar||2009-05-01|Has expired: Tcl 8.0 support is going to be dropped devel/cppadvio||2009-05-01|Has expired: abandoned upstream, does not work with current versions of GCC, needs gcc295 which has been failing to build for months irc/olirc||2009-05-01|Has expired: project is discontinued and Tcl 8.2 support is going to be dropped multimedia/toxine||2009-05-01|Has expired: has been inactive for almost 5 years net-mgmt/nagios12||2009-05-01|Has expired: Obsolete version, consider migration to net-mgmt/nagios sysutils/bbsmount||2009-05-01|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months sysutils/puppet-devel||2009-05-01|Has expired: Use sysutils/puppet instead sysutils/tua||2009-05-01|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months x11/qrash||2009-05-01|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months textproc/sp||2009-05-03|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months www/phpsurveyor|www/limesurvey|2009-05-05|Project was renamed devel/oskit||2009-05-07|Has expired: does not work with current versions of GCC, needs gcc295 which has been failing to build for months, no active maintainer www/p5-WWW-Nicovideo-Download|www/p5-WWW-NicoVideo-Download|2009-05-07|Directory renamed german/swissgerman-ding|german/ding|2009-05-12|Integrated into german/ding misc/sonytv||2009-05-28|Has expired: Tcl 8.3 support is going to be dropped mail/postilion||2009-05-28|Has expired: Tcl 8.3 support is going to be dropped x11-toolkits/p5-TclTk||2009-05-28|Has expired: replaced by x11-toolkits/p5-Tcl-Tk japanese/ipa-ttfonts|japanese/font-ipa|2009-05-30|Renamed japanese/sazanami-ttf|japanese/font-sazanami|2009-05-30|Renamed japanese/kochi-ttfonts|japanese/font-kochi|2009-05-30|Renamed japanese/umefont|japanese/font-ume|2009-05-30|Renamed japanese/mplusfonts|japanese/font-mplus|2009-05-30|Renamed japanese/vlgothic|japanese/font-vlgothic|2009-05-30|Renamed japanese/shinonome|japanese/font-shinonome|2009-05-30|Renamed net/tftp-hpa|ftp/tftp-hpa|2009-05-31|Duplicate port biology/p5-bioperl-devel||2009-06-05|Has expired: no longer under development biology/p5-bioperl-run-devel||2009-06-05|Has expired: no longer under development net-p2p/deluge05||2009-06-05|Has expired: use net-p2p/deluge instead textproc/gmat||2009-06-05|Has expired: failed to build for a long time, no maintainer and apparently no users either devel/powerpc-gcc||2009-06-06|Has expired: use cross-gcc instead devel/powerpc-binutils||2009-06-06|Has expired: use cross-binutils instead www/apache-jserv|www/tomcat6|2009-06-08|Has expired: superseded by tomcat lang/perl5.6||2009-06-08|Has expired: no longer under development, use lang/perl5.10 or lang/perl5.8 multimedia/dplay|multimedia/playd|2009-06-10|Port renamed www/epiphany-webkit|www/epiphany|2009-06-10|Webkit backend isn't supported japanese/slirc||2009-06-13|Removed chinese/wordpress||2009-06-13|Removed due to security vulnerabilities www/amaya||2009-06-13|Removed due to security vulnerabilities www/awstats-devel||2009-06-13|Removed due to security vulnerabilities audio/festival+OGI||2009-06-13|Has expired: unmaintained, does not work with current versions of GCC, needs gcc295 which has been failing to build for months audio/festlex-ifd||2009-06-13|Has expired: unfulfilled dependencies for 8+ months, no active maintainer, no user interest audio/festogi-italian||2009-06-13|Has expired: unfulfilled dependencies for 8+ months, no active maintainer, no user interest audio/festogi-spanish||2009-06-13|Has expired: unfulfilled dependencies for 8+ months, no maintainer, no user interest audio/festvox-abc||2009-06-13|Has expired: unfulfilled dependencies for 8+ months, no user interest audio/festvox-hvs||2009-06-13|Has expired: unfulfilled dependencies for 8+ months, no user interest audio/festvox-jph||2009-06-13|Has expired: unfulfilled dependencies for 8+ months, no maintainer, no user interest audio/festvox-lp||2009-06-13|Has expired: unfulfilled dependencies for 8+ months, no active maintainer, no user interest audio/festvox-mwm||2009-06-13|Has expired: unfulfilled dependencies for 8+ months, no maintainer, no user interest audio/festvox-ogirab||2009-06-13|Has expired: unfulfilled dependencies for 8+ months, no maintainer, no user interest audio/festvox-pc||2009-06-13|Has expired: unfulfilled dependencies for 8+ months, no active maintainer, no user interest audio/festvox-tll||2009-06-13|Has expired: unfulfilled dependencies for 8+ months, no maintainer, no user interest audio/py-sdl_mixer||2009-06-13|Has expired: has been broken for more than 6 months graphics/libimg-tk83||2009-06-13|Has expired: Tcl 8.3 support is going to be dropped multimedia/manencode||2009-06-13|Has expired www/mnogosearch31||2009-06-13|Has expired: Use www/mnogosearch instead, this version is ancient www/php4-mnogosearch||2009-06-13|Removed www/winhelpcgi||2009-06-13|Has expired x11-toolkits/p5-GtkXmHTML||2009-06-13|Has expired: depends on a broken, expired port x11-toolkits/wxmozilla||2009-06-13|Has expired: has been broken for more than 6 months audio/gnomad2||2009-06-13|Removed audio/p5-Audio-TagLib||2009-06-13|Removed audio/sineshaper||2009-06-13|Removed comms/xcept||2009-06-13|Removed; obsolete protocol no longer in use by telcos comms/gfax||2009-06-13|Removed deskutils/kio_locate||2009-06-13|Removed deskutils/mical||2009-06-13|Removed devel/p5-VCP||2009-06-13|Removed devel/ruby-p4||2009-06-13|Removed games/fgsd||2009-06-13|Removed graphics/demeter||2009-06-13|Removed irc/ircg||2009-06-13|Removed mail/silkymail||2009-06-13|Removed multimedia/dirac-reference||2009-06-13|Removed multimedia/smilutils||2009-06-13|Removed net-im/icqnd||2009-06-13|Removed net-im/ocaml-jabbr||2009-06-13|Removed net-mgmt/nav||2009-06-13|Removed net/evolution-rss||2009-06-13|Removed net/openpbx.org||2009-06-13|Removed news/inn-current||2009-06-13|Removed science/elmerfront||2009-06-13|Removed science/openfoam||2009-06-13|Removed www/cacheboy||2009-06-13|Removed www/p5-HTML-Embperl||2009-06-13|Removed www/thttpd-st||2009-06-13|Removed www/toofpy||2009-06-13|Removed x11-drivers/xf86-video-vga||2009-06-13|Removed x11-toolkits/py-pyxfce||2009-06-13|Removed multimedia/mlt++|multimedia/mlt|2009-06-15|Project reorganization x11-wm/enlightenment-devel|x11-wm/enlightenment|2009-06-15|Relocated lang/pm3-base||2009-06-15|Has expired: Has been broken for more than 6 months lang/pm3-forms||2009-06-15|Has expired: depends on broken, expired port lang/pm3-gui||2009-06-15|Has expired: depends on broken, expired port lang/pm3-m3tk||2009-06-15|Has expired: depends on broken, expired port lang/pm3-net||2009-06-15|Has expired: depends on broken, expired port lang/pm3-netobj||2009-06-15|Has expired: depends on broken, expired port graphics/juno-2||2009-06-15|Removed net/p5-ZConf-Mail|mail/p5-ZConf-Mail|2009-06-15|Moved to mail/p5-ZConf-Mail net/p5-ZConf-BGSet|deskutils/p5-ZConf-BGSet|2009-06-15|Moved to deskutils/p5-ZConf-BGSet www/postnuke||2009-06-16|Project abandoned x11-toolkits/py-anygui||2009-06-16|No longer actively developed or supported mail/mailrep||2009-06-18|Project abandoned devel/monodoc||2009-06-19|Now included in lang/mono misc/koffice-i18n|editors/koffice-i18n|2009-06-29|Moved to editors category misc/koffice-i18n-af|editors/koffice-i18n-af|2009-06-29|Moved to editors category misc/koffice-i18n-bg|editors/koffice-i18n-bg|2009-06-29|Moved to editors category misc/koffice-i18n-br|editors/koffice-i18n-br|2009-06-29|Moved to editors category misc/koffice-i18n-bs|editors/koffice-i18n-bs|2009-06-29|Moved to editors category misc/koffice-i18n-ca|editors/koffice-i18n-ca|2009-06-29|Moved to editors category misc/koffice-i18n-cs|editors/koffice-i18n-cs|2009-06-29|Moved to editors category misc/koffice-i18n-cy|editors/koffice-i18n-cy|2009-06-29|Moved to editors category misc/koffice-i18n-da|editors/koffice-i18n-da|2009-06-29|Moved to editors category misc/koffice-i18n-el|editors/koffice-i18n-el|2009-06-29|Moved to editors category misc/koffice-i18n-en_GB|editors/koffice-i18n-en_GB|2009-06-29|Moved to editors category misc/koffice-i18n-eo|editors/koffice-i18n-eo|2009-06-29|Moved to editors category misc/koffice-i18n-es|editors/koffice-i18n-es|2009-06-29|Moved to editors category misc/koffice-i18n-et|editors/koffice-i18n-et|2009-06-29|Moved to editors category misc/koffice-i18n-eu|editors/koffice-i18n-eu|2009-06-29|Moved to editors category misc/koffice-i18n-fa|editors/koffice-i18n-fa|2009-06-29|Moved to editors category misc/koffice-i18n-fi|editors/koffice-i18n-fi|2009-06-29|Moved to editors category misc/koffice-i18n-ga|editors/koffice-i18n-ga|2009-06-29|Moved to editors category misc/koffice-i18n-gl|editors/koffice-i18n-gl|2009-06-29|Moved to editors category misc/koffice-i18n-hi|editors/koffice-i18n-hi|2009-06-29|Moved to editors category misc/koffice-i18n-hsb|editors/koffice-i18n-hsb|2009-06-29|Moved to editors category misc/koffice-i18n-is|editors/koffice-i18n-is|2009-06-29|Moved to editors category misc/koffice-i18n-it|editors/koffice-i18n-it|2009-06-29|Moved to editors category misc/koffice-i18n-km|editors/koffice-i18n-km|2009-06-29|Moved to editors category misc/koffice-i18n-lo|editors/koffice-i18n-lo|2009-06-29|Moved to editors category misc/koffice-i18n-lt|editors/koffice-i18n-lt|2009-06-29|Moved to editors category misc/koffice-i18n-lv|editors/koffice-i18n-lv|2009-06-29|Moved to editors category misc/koffice-i18n-mk|editors/koffice-i18n-mk|2009-06-29|Moved to editors category misc/koffice-i18n-ms|editors/koffice-i18n-ms|2009-06-29|Moved to editors category misc/koffice-i18n-mt|editors/koffice-i18n-mt|2009-06-29|Moved to editors category misc/koffice-i18n-nb|editors/koffice-i18n-nb|2009-06-29|Moved to editors category misc/koffice-i18n-nl|editors/koffice-i18n-nl|2009-06-29|Moved to editors category misc/koffice-i18n-nn|editors/koffice-i18n-nn|2009-06-29|Moved to editors category misc/koffice-i18n-ro|editors/koffice-i18n-ro|2009-06-29|Moved to editors category misc/koffice-i18n-se|editors/koffice-i18n-se|2009-06-29|Moved to editors category misc/koffice-i18n-sk|editors/koffice-i18n-sk|2009-06-29|Moved to editors category misc/koffice-i18n-sl|editors/koffice-i18n-sl|2009-06-29|Moved to editors category misc/koffice-i18n-sr|editors/koffice-i18n-sr|2009-06-29|Moved to editors category misc/koffice-i18n-sr@Latn|editors/koffice-i18n-sr_Latn|2009-06-29|Moved to editors category misc/koffice-i18n-sv|editors/koffice-i18n-sv|2009-06-29|Moved to editors category misc/koffice-i18n-ta|editors/koffice-i18n-ta|2009-06-29|Moved to editors category misc/koffice-i18n-tg|editors/koffice-i18n-tg|2009-06-29|Moved to editors category misc/koffice-i18n-th|editors/koffice-i18n-th|2009-06-29|Moved to editors category misc/koffice-i18n-tr|editors/koffice-i18n-tr|2009-06-29|Moved to editors category misc/koffice-i18n-uz|editors/koffice-i18n-uz|2009-06-29|Moved to editors category misc/koffice-i18n-ven|editors/koffice-i18n-ven|2009-06-29|Moved to editors category misc/koffice-i18n-xh|editors/koffice-i18n-xh|2009-06-29|Moved to editors category misc/koffice-i18n-zu|editors/koffice-i18n-zu|2009-06-29|Moved to editors category x11-toolkits/tk80||2009-07-07|Has expired: Tcl 8.0 support is dropped lang/tcl80||2009-07-07|Has expired: Tcl 8.0 support is dropped audio/gai-album||2009-07-07|Has expired: abandoned project, does not build audio/gai-visual-audio||2009-07-07|Has expired: abandoned project, does not build devel/linxt||2009-07-07|Has expired: Use devel/roboctl instead german/citrix_ica|net/citrix_ica|2009-07-07|Has expired: Use net/citrix_ica japanese/citrix_ica|net/citrix_ica|2009-07-07|Has expired: Use net/citrix_ica mail/bogofilter-qdbm||2009-07-07|Has expired: Migrate to bogofilter-tc instead mail/xc-mail||2009-07-07|Has expired: depends on a port that expired in 2007 www/trac-blog||2009-07-07|Has expired: Not supported anymore for trac > 0.10; use FullBlogPlugin instead www/trac-restrictedarea||2009-07-07|Has expired: Not supported anymore; functionality included in trac since 0.11 deskutils/plasma-applet-quicklauncher||2009-07-10|Not supported anymore; functionality in kdebase4-workspace now net-mgmt/net-snmp53||2009-07-13|Has expired: Use net-mgmt/net-snmp www/firefox-devel||2009-07-13|Please use www/firefox3 or www/firefox35 databases/phpminadmin|databases/adminer|2009-07-14|Project was renamed math/R-sp|math/R-cran-sp|2009-07-17|Port was renamed lang/gcc-ooo|lang/gcc43|2009-07-18|Not used by OpenOffice anymore, superseded by gcc43 security/altivore||2009-07-19|Removed editors/openoffice.org-2-devel||2009-07-21|Removed games/amy||2009-07-28|Has expired: mastersite disappeared, does not build on recent version security/hashish||2009-07-28|Has expired: does not compile security/smtpmap||2009-07-28|Has expired: depends on GCC 2.95 which has not been available for 9+ months devel/boost|devel/boost-libs|2009-07-28|Boost ports were split and sliced devel/boost-python|devel/boost-python-libs|2009-07-28|Boost ports were split and sliced www/xpi-firegpg||2009-07-31|Removed editors/koffice-i18n-sr@Latn|editors/koffice-i18n-sr_Latn|2009-08-02|Use editors/koffice-i18n-sr_Latn misc/kde3-i18n-sr@Latn|misc/kde3-i18n-sr_Latn|2009-08-02|Use misc/kde3-i18n-sr_Latn lang/tinycobol||2009-08-08|Has expired: no longer being developed; consider using lang/open-cobol instead net/ppptraf||2009-08-08|Removed: author has abandoned this program www/zope-guf||2009-08-08|Removed: no longer being developed: use SimpleUserFolder or exUserFolder instead misc/xenmenu||2009-08-08|Removed: Project abandoned in 1998 security/dns-proxy-tor||2009-08-09|Removed security/trans-proxy-tor||2009-08-09|Removed: trans-proxy-tor is rendered obsolete by Tor's TransPort option (currently only available in tor-devel) science/dft++||2009-08-11|Removed devel/p5-MooseX-Policy-SemiAffordanceAccessor|devel/p5-MooseX-SemiAffordanceAccessor|2009-08-18|Renamed www/mediawiki12|www/mediawiki112|2009-08-19|Renamed lang/gcc42-withgcjawt|lang/gcc42|2009-08-19|Not needed any longer, still an option for the regular lang/gcc ports math/octave-forge-windows||2009-08-23|Abandoned upstream math/freefem++||2009-08-23|Has expired: unmaintained and consistently unportable math/it++||2009-08-23|Has expired: unmaintained and consistently unportable databases/firebird-client||2009-09-03|Removed: no longer under development databases/firebird-server||2009-09-03|Removed: no longer under development audio/slimserver|audio/squeezecenter|2009-09-04|SlimServer has been superseded by SqueezeCenter audio/slimserver-dynamicplaylist|audio/squeezecenter-dynamicplaylist|2009-09-04|SlimServer has been superseded by SqueezeCenter audio/slimserver-dynamictransition||2009-09-04|SlimServer has been superseded by SqueezeCenter audio/slimserver-lastfm||2009-09-04|SlimServer has been superseded by SqueezeCenter audio/slimserver-lazysearch|audio/squeezecenter-lazysearch|2009-09-04|SlimServer has been superseded by SqueezeCenter audio/slimserver-slimscrobbler||2009-09-04|SlimServer has been superseded by SqueezeCenter audio/slimserver-sqlplaylist|audio/squeezecenter-sqlplaylist|2009-09-04|SlimServer has been superseded by SqueezeCenter audio/slimserver-superdatetime|audio/squeezecenter-superdatetime|2009-09-04|SlimServer has been superseded by SqueezeCenter audio/slimserver-trackstat|audio/squeezecenter-trackstat|2009-09-04|SlimServer has been superseded by SqueezeCenter www/conkeror|www/xpi-conkeror|2009-09-05|Please use www/xpi-conkeror www/nvu|www/kompozer|2009-09-10|Abandoned upstream since 2005 editors/bed||2009-09-13|Removed: marked IGNORE for more than two years, unmaintained devel/eric||2009-09-16|Removed: obsoleted by devel/eric4 devel/p5-Algorithm-MDiff||2009-09-16|Has expired: the module was removed from CPAN devel/p5-Data-Postponed||2009-09-16|Has expired: the module was removed from CPAN net/asterisk12-addons||2009-09-16|Has expired: does not build archivers/lzmautils|archivers/xz|2009-09-21|Project was renamed archivers/lzmautils-devel|archivers/xz|2009-09-21|Project was renamed audio/audacious-mac||2009-09-21|Does not work with audacious 2 and audacious-plugins already delivers a demac plugin systutils/uptimec||2009-09-23|Project is gone since 2007 www/cakephp||2009-09-23|Repomoved to www/cakephp11 www/cakephp-devel||2009-09-23|Repomoved to www/cakephp12 audio/gmpccaa||2009-09-24|Unmaintained upstream audio/gmpc-osd||2009-09-24|Unmaintained upstream audio/gmpc-qosd||2009-09-24|Unmaintained upstream audio/gmpc-random-playlist||2009-09-24|Unmaintained upstream audio/gmpc-serverstats||2009-09-24|Unmaintained upstream audio/gmpc-favorites||2009-09-24|Unmaintained upstream audio/gmpc-autoplaylist||2009-09-24|Unmaintained upstream audio/gmpc-stopbutton||2009-09-24|Unmaintained upstream sysutils/zccron|sysutils/p5-ZConf-Cron|2009-09-27|Please use sysutils/p5-ZConf-Cron devel/p5-Cwd|devel/p5-PathTools|2009-09-30|Please use devel/p5-PathTools x11/electricsheep||2009-10-02|No source tarball, Unix code unmaintained sysutils/fusefs-gphotofs||2009-10-05|Removed x11/kxgenerator||2009-10-07|Has expired: Project abandoned, master site disappeared hebrew/geresh||2009-10-08|No longer maintained upstream misc/tmux|sysutils/tmux|2009-10-14|Moved to sysutils category audio/xmms-uade|audio/uade|2009-10-18|Decoupled from XMMS port net-p2p/mute-net-gui|net-p2p/mute-net|2009-10-19|Broken for extensive period of time and unmaintained net-p2p/mute-net-text|net-p2p/mute-net|2009-10-19|Broken for extensive period of time and unmaintained graphics/libwpcg||2009-10-25|Unmaintained upstream, depends on an old version of GCC, lacks a maintainer, and not used by anything else databases/ruby-dbd_msql||2009-10-29|Has expired: no longer under development databases/ruby-dbd_proxy||2009-10-29|Has expired: no longer under development databases/ruby-dbd_interbase||2009-10-29|Has expired: no longer under development textproc/p5-XML-LibXML-Common|textproc/p5-XML-LibXML|2009-10-30|Merged misc/bibletime-kde4|misc/bibletime|2009-10-30|Renamed now that KDE dependencies are removed net/xmlrpc++||2009-10-31|Unmaintained upstream and on the FreeBSD side net-p2p/mute-net||2009-10-31|Broken for extensive period of time and unmaintained emulators/fceu|emulators/fceux|2009-11-04|Repocopied to new location net/p5-Net-EPP-Frame|net/p5-Net-EPP|2009-11-11|Please use net/p5-Net-EPP net/p5-Net-EPP-Client|net/p5-Net-EPP|2009-11-11|Please use net/p5-Net-EPP editors/qemacs||2009-11-19|Has expired: depends on old version of GCC, no maintainer, not used by any other port, dead upstream mail/postfix-gps-devel||2009-11-19|Has expired: Older than main port, no sign of maintainer activity beyond port creation 4+ years ago graphics/php4-ffmpeg||2009-11-19|Has expired: development continues only for php5 net-p2p/nicotine||2009-11-19|Has expired: development stalled years ago, use net-p2p/nicotine-plus instead sysutils/rsyslog||2009-11-19|Has expired: Use sysutils/rsyslog3 or sysutils/rsyslog4 instead sysutils/rsyslog-gssapi||2009-11-19|Has expired: Use sysutils/rsyslog3 or sysutils/rsyslog4 instead sysutils/rsyslog-mysql||2009-11-19|Has expired: Use sysutils/rsyslog3 or sysutils/rsyslog4 instead sysutils/rsyslog-pgsql||2009-11-19|Has expired: Use sysutils/rsyslog3 or sysutils/rsyslog4 instead misc/kde4-l10n-ta||2009-11-19|Has expired: unfetchable and unmaintained upstream security/f-prot-sig||2009-11-20|No longer needed with security/f-prot update lang/gcc295|lang/gcc44|2009-11-21|Abandoned upstream, superseded by later versions games/freebsd-games|games/bsdgames|2009-11-21|Superseded by and equivalent to freebsd-games devel/arm-elf-gcc295|devel/cross-gcc|2009-11-21|Broken with current versions of FreeBSD, abandoned upstream, superseded by later versions x11-toolkits/xclasses||2009-11-24|Has expired: Version branch long since retired mail/p5-Email-MIME-Creator||2009-11-24|Folded into p5-Email-MIME package mail/p5-Email-MIME-Modifier||2009-11-24|Folded into p5-Email-MIME package mail/p5-Email-Simple-Creator||2009-11-24|Folded into p5-Email-Simple package www/gecko-sharp10|www/gecko-sharp20|2009-11-26|Superseded by later version devel/tclxml-libxml2|devel/tclxml|2009-11-26|Port now is part of devel/tclxml devel/tclxml-expat|devel/tclxml|2009-11-26|Port now is part of devel/tclxml www/tcldom|devel/tclxml|2009-11-26|Port now is part of devel/tclxml www/tcldom-libxml2|devel/tclxml|2009-11-26|Port now is part of devel/tclxml devel/gtkmozedit||2009-11-27|No longer under development, does not build with libxul finance/p5-HTML-Query|www/p5-HTML-Query|2009-11-28|Moved to www category graphics/clutter-cairo|graphics/clutter|2009-11-28|This port is obsolete, all functionality is now in graphics/clutter www/galeon||2009-11-28|This port is obsolete; similar functionality can be found in www/epiphany sysutils/policykit-kde||2009-11-29|This port is obsolete; all functionality included in x11/kdebase4 audio/squeezecenter-trackstat|audio/squeezeboxserver-trackstat|2009-11-30|Has expired: Replaced by audio/squeezeboxserver-trackstat audio/squeezecenter-superdatetime|audio/squeezeboxserver-superdatetime|2009-11-30|Has expired: Replaced by audio/squeezeboxserver-superdatetime audio/squeezecenter-sqlplaylist|audio/squeezeboxserver-sqlplaylist|2009-11-30|Has expired: Replaced by audio/squeezeboxserver-sqlplaylist audio/squeezecenter-lazysearch|audio/squeezeboxserver-lazysearch|2009-11-30|Has expired: Replaced by audio/squeezeboxserver-lazysearch audio/squeezecenter-dynamicplaylist|audio/squeezeboxserver-dynamicplaylist|2009-11-30|Has expired: Replaced by audio/squeezeboxserver-dynamicplaylist audio/squeezecenter|audio/squeezeboxserver|2009-11-30|Has expired: Replaced by audio/squeezeboxserver www/mod_auth_mysql41_ap2||2009-11-30|Has expired: distfile no longer fetchable x11-toolkits/gtkscintilla||2009-11-30|Has expired: no longer under development, last release in 2002 x11-toolkits/py-gtkscintilla||2009-11-30|Has expired: no longer under development, last release in 2002 www/xulrunner|www/libxul|2009-12-02|Superseded by www/libxul security/pear-Crypt_HMAC||2009-12-07|Please use security/pear-Crypt_HMAC2 mail/dovecot-devel|mail/dovecot|2009-12-08|Non-devel version is newer net-mgmt/net-snmp-tkmib||2009-12-08|Depends on expired port p5-SNMP net-mgmt/p5-SNMP||2009-12-08|Expired www/jakarta-tomcat4||2009-12-08|Has expired: www/jakarta-tomcat5 is recommended instead for new installations x11-toolkits/p5-Gnome||2009-12-08|Has expired: Has been broken for more than 6 months editors/abiword-extras|editors/abiword|2009-12-08|This subport has been included in the main port editors/abiword-plugins|editors/abiword|2009-12-08|This subport has been included in the main port www/jakarta-tomcat5||2009-12-10|Has expired: Old version, consider using www/tomcat55 or www/tomcat6 instead net-mgmt/zabbix|net-mgmt/zabbix-server|2009-12-13|Port was split into three components net/grdc|net/remmina|2009-12-14|Project was renamed net/grdc-applet|net/remmina-applet|2009-12-14|Project was renamed security/pfw||2009-12-14|Project is no longer maintainer ftp/pftpx||2009-12-15|Broken by libevent update and the project is dead x11-toolkits/evilvte|x11/evilvte|2009-12-15|Moved to x11 category lang/python23||2009-12-18|No longer under development lang/python30||2009-12-18|No longer under development cad/fandango||2009-12-18|No longer under development math/py-mpz||2009-12-18|Depends on expired Python ports www/neon26|www/neon28|2009-12-19|Removed due to security vulnerabilities misc/bsdiff||2009-12-24|Incorporated into base system long ago security/freebsd-update||2009-12-24|Incorporated into base system long ago sysutils/est||2009-12-24|Incorporated into base system long ago sysutils/estctrl||2009-12-24|Incorporated into base system long ago sysutils/freebsd-sha1||2009-12-24|Incorporated into base system long ago sysutils/freebsd-sha256||2009-12-24|Incorporated into base system long ago irc/znc-extras||2009-12-24|Has expired: Migrate to irc/znc instead games/love|devel/love|2009-12-26|Moved to a better category archivers/star-devel||2009-12-26|Removed databases/mysql54-client|databases/mysql55-client|2010-01-04|Updated to milestone 2 databases/mysql54-server|databases/mysql55-server|2010-01-04|Updated to milestone 2 databases/mysql54-scripts|databases/mysql55-scripts|2010-01-04|Updated to milestone 2 databases/p5-DBD-mysql54|databases/p5-DBD-mysql55|2010-01-04|Updated to milestone 2 misc/sword15|misc/sword|2010-01-06|Has expired: use misc/sword misc/bibletime-kde3|misc/bibletime|2010-01-06|Has expired: use misc/bibletime mail/squirrelmail-devel|mail/squirrelmail|2010-01-06|Has expired: use mail/squirrelmail lang/drscheme|lang/plt-scheme|2010-01-07|Superseded by lang/plt-scheme databases/mysql60-client||2010-01-10|Has expired: no longer under development databases/mysql60-server||2010-01-10|Has expired: no longer under development databases/mysql60-scripts||2010-01-10|Has expired: no longer under development databases/p5-DBD-mysql60||2010-01-10|Has expired: no longer under development devel/cl-asdf-sbcl||2010-01-12|lang/sbcl has a bundled asdf version emulators/virtualbox|emulators/virtualbox-ose|2010-01-13|Renamed and split into two components devel/gold|devel/binutils|2010-01-13|Part of binutils shells/tcsh-bofh||2010-01-15|Removed audio/ccaudio||2010-01-18|Has expired: has been broken for 4 months audio/py-libmpdclient||2010-01-18|Has expired: has been broken for 3 months chinese/gbk2uni||2010-01-18|Has expired: has been broken for 6 months chinese/iiimf-le-xcin||2010-01-18|Has expired: has been broken for 3 months devel/adabindx||2010-01-18|Has expired: has been broken for 3 months devel/agide||2010-01-18|Has expired: has been broken for 6 months devel/asis||2010-01-18|Has expired: has been broken for 3 months devel/callgrind||2010-01-18|Has expired: Included in devel/valgrind devel/florist||2010-01-18|Has expired: has been broken for 3 months graphics/gephex||2010-01-18|Has expired: has been broken for 3 months graphics/irit||2010-01-18|Has expired: has been broken for 3 months graphics/pixieplus||2010-01-18|Has expired: has been broken for 6 months japanese/expect||2010-01-18|Has expired: has been broken for 3 months lang/pnetc||2010-01-18|Has expired: has been broken for 5 months mail/libnewmail||2010-01-18|Has expired: has been broken for 3 months net-mgmt/flowscan||2010-01-18|Has expired: has been broken for 5 months net/astmanproxy||2010-01-18|Has expired: has been broken for 3 months palm/prc-tools||2010-01-18|Has expired: has been broken for 4 months print/latex-msc||2010-01-18|Has expired: has been broken for 3 months science/xloops-ginac||2010-01-18|Has expired: has been broken for 3 months shells/bush||2010-01-18|Has expired: has been broken for 3 months textproc/iiimf-gnome-im-switcher||2010-01-18|Has expired: has been broken for 4 months textproc/iiimf-gtk||2010-01-18|Has expired: has been broken for 3 months x11-toolkits/gtkada-devel||2010-01-18|Has expired: has been broken for 3 months x11-wm/ion-2||2010-01-18|Has expired: has been broken for 4 months databases/pear-Doctrine2||2010-01-20|Removed audio/dino||2010-01-20|Has expired: has been broken for 7 months devel/asis-gpl||2010-01-20|Has expired: has been broken for 3 months devel/radrails||2010-01-20|Has expired: has been broken for 3 months devel/rubygem-rtags||2010-01-20|Has expired: has been broken for 5 months games/hattrickorganizer||2010-01-20|Has expired: Has been broken for a while games/laughingman||2010-01-20|Has expired: has been broken for 3 months devel/gdb53||2010-01-20|Has expired: has been broken for 3 months lang/ccscript||2010-01-20|Has expired: has been broken for 4 months lang/gnat-glade||2010-01-20|Has expired: has been broken for 3 months lang/xsb||2010-01-20|Has expired: has been broken for 6 months multimedia/nmm||2010-01-20|Has expired: has been broken for 3 months textproc/bidiv||2010-01-20|Has expired: has been broken for 3 months textproc/xmlada-gps||2010-01-20|Has expired: has been broken for 3 months net/mugshot||2010-01-23|No longer working, Mastersite disappeared lang/gnat-gcc41|lang/gnat-gcc44|2010-01-24|Superseded by newer upstream versions x11-toolkits/gtkada-gcc||2010-01-24|Not really maintained for a while and depended on lang/gnat-gcc41 which is gone x11-toolkits/gtkada-gps||2010-01-28|Has expired: has been broken for 3 months x11-fm/velocity||2010-01-28|Has expired: has been broken for 7 months x11-drivers/xf86-video-nsc||2010-01-28|Has expired: has been broken for 5 months www/pecl-pecl_http|www/pecl-http|2010-01-31|Duplicate ports chinese/stardict2-dict-zh_CN||2010-01-31|Please use chinese/stardict-dict-zh_CN math/octave-forge-ann||2010-02-02|Has expired: has been broken for 3 months math/octave-forge-fixed||2010-02-02|Has expired: has been broken for 3 months math/octave-forge-ftp||2010-02-02|Has expired: has been broken for 3 months math/octave-forge-graceplot||2010-02-02|Has expired: has been broken for 3 months math/octave-forge-triangular||2010-02-02|Has expired: has been broken for 3 months math/octave-forge-vrml||2010-02-02|Has expired: has been broken for 3 months sysutils/lugtools|sysutils/p5-Plugtools|2010-02-04|Superseded by sysutils/p5-Plugtools irc/conspire||2010-02-04|Upstream development abandoned x11-toolkits/swt31|x11-toolkits/swt|2010-02-07|Superseded by x11-toolkits/swt sysutils/smartmontools-devel|sysutils/smartmontools|2010-02-10|Removed, use sysutils/smartmontools instead ports-mgmt/portbrowser||2010-02-16|No longer maintained editors/openoffice.org-2-RC||2010-02-19|Removed net-p2p/rblibtorrent-devel|net-p2p/libtorrent-rasterbar-14|2010-02-21|No longer devel, recognize project name sysutils/munin-main|sysutils/munin-master|2010-02-22|Reorganized upstream multimedia/tsMuxeR|multimedia/linux-tsmuxer|2010-02-24|Port was given a better name japanese/stardict2-dict-ja||2010-02-25|Please use japanese/stardict-dict-ja net/mpd||2010-02-25|Has expired: obsoleted, unsupported port. Use net/mpd4, net/mpd5 instead textproc/xmlada-gcc||2010-02-27|Has expired: broken and practically unmaintained www/cheetah||2010-03-16|Has expired: broken, unmaintained, development ceased in 2001 mail/sylpheed2|mail/sylpheed3|2010-03-23|Update to new major version multimedia/gstreamer-schroedinger||2010-03-24|Removed multimedia/video4bsd-kmod|multimedia/cuse4bsd-kmod|2010-03-25|Renamed japanese/asterisk-sound|japanese/asterisk-sounds|2010-03-26|Fix port name typo x11-drivers/xf86-input-calcomp||2010-03-27|Unmaintained upstream. Notify x11 Maintainers if you have this device x11-drivers/xf86-input-digitaledge||2010-03-27|Unmaintained upstream. Notify x11 Maintainers if you have this device x11-drivers/xf86-input-dmc||2010-03-27|Unmaintained upstream. Notify x11 Maintainers if you have this device x11-drivers/xf86-input-dynapro||2010-03-27|Unmaintained upstream. Notify x11 Maintainers if you have this device x11-drivers/xf86-input-elo2300||2010-03-27|Unmaintained upstream. Notify x11 Maintainers if you have this device x11-drivers/xf86-input-jamstudio||2010-03-27|Unmaintained upstream. Notify x11 Maintainers if you have this device x11-drivers/xf86-input-magellan||2010-03-27|Unmaintained upstream. Notify x11 Maintainers if you have this device x11-drivers/xf86-input-microtouch||2010-03-27|Unmaintained upstream. Notify x11 Maintainers if you have this device x11-drivers/xf86-input-palmax||2010-03-27|Unmaintained upstream. Notify x11 Maintainers if you have this device x11-drivers/xf86-input-spaceorb||2010-03-27|Unmaintained upstream. Notify x11 Maintainers if you have this device x11-drivers/xf86-input-summa||2010-03-27|Unmaintained upstream. Notify x11 Maintainers if you have this device x11-drivers/xf86-input-tek4957||2010-03-27|Unmaintained upstream. Notify x11 Maintainers if you have this device audio/ym2wav|audio/stymulator|2010-03-27|ym2wav is now part of stymulator www/trac-webadmin||2010-03-30|Incorporated to www/trac audio/gstreamer-plugins-ivorbis|audio/gstreamer-plugins-vorbis|2010-03-30|ivorbis plugin got merged into the vorbis plugin math/octave-forge-arpack||2010-04-02|Incorporated to math/octave-forge www/p5-Plack-Request||2010-04-03|Incorporated to www/p5-Plack net-im/pidgin-birthday_reminder|net-im/pidgin-birthday-reminder|2010-04-05|Project was renamed misc/proj4|graphics/proj|2010-04-05|Replaced sysutils/phplogcon|sysutils/loganalyzer|2010-04-05|Project was renamed databases/php5-dbase||2010-04-09|Removed from core php devel/php5-ncurses||2010-04-09|Removed from core php devel/php5-pcre|lang/php5|2010-04-09|Bundled in core php devel/php5-spl|lang/php5|2010-04-09|Bundled in core php graphics/php5-ming||2010-04-09|Removed from core php security/php5-mhash|security/php5-hash|2010-04-09|Wrapper in hash extension databases/php5-oci8||2010-04-11|Doesn't support Oracle8 client library databases/php5-pdo_oci||2010-04-11|Doesn't support Oracle8 client library sysutils/rc_subr||2010-04-16|No longer needed math/libgmp4|math/gmp|2010-04-19|Switch to newer performance release irc/dircproxy-devel||2010-04-19|Removed security/krb5-17||2010-04-25|Deleted: no longer builds with new OpenSSL 1.0; security/krb5 now contains 1.8.1 www/blogd|www/ephemera|2010-04-26|Port renamed audio/py-flac||2010-05-02|Has expired: has been marked IGNORE for past 24 months databases/mysql-connector-java50||2010-05-02|Has expired: Old version: please use databases/mysql-connector-java instead databases/p5-DBIx-Class-HTML-FormFu||2010-05-02|Has expired: This module is obsoleted by www/p5-HTML-FormFu-Model-DBIC devel/py-rbtree||2010-05-02|Has expired: does not build with new pyrex and not actively maintained devel/tavrasm||2010-05-02|Has expired: No longer maintained, use devel/avra instead mail/postfix23||2010-05-02|Has expired: No longer maintained by upstream developer misc/ezload||2010-05-02|Has expired: does not build with new USB stack in 8-STABLE misc/gkrellmbgchg||2010-05-02|Has expired: use misc/gkrellmbgchg2 multimedia/kbtv||2010-05-02|Has expired: no longer under development by author net/plb||2010-05-02|Has expired: broken; abandoned by author; use net/relayd or www/nginx instead security/vpnd||2010-05-02|Has expired: This software is no longer developed textproc/isearch||2010-05-02|Has expired: abandoned upstream, uses an obsolete version of GCC, not used by any other port www/caudium12||2010-05-02|Has expired: No longer maintained upstream, please switch to www/caudium14 www/p5-Catalyst-Plugin-Cache-FileCache||2010-05-02|Has expired: Deprecated by module author in favor of www/p5-Catalyst-Plugin-Cache accessibility/gir-repository-atk|accessibility/atk|2010-05-10|Now installed by accessibility/atk multimedia/totem-xine|multimedia/totem|2010-05-10|Totem xine backend is dead for a while www/gir-repository-webkit|www/webkit-gtk2|2010-05-10|Now installed by www/webkit-gtk2 x11-toolkits/gir-repository-gtk20|x11-toolkits/gtk20|2010-05-10|Now installed by x11-toolkits/gtk20 x11-toolkits/gir-repository-libwnck|x11-toolkits/libwnck|2010-05-10|Now installed by x11-toolkits/libwnck x11-toolkits/gir-repository-pango|x11-toolkits/pango|2010-05-10|Now installed by x11-toolkits/pango x11/gir-repository-gnome-menus|x11/gnome-menus|2010-05-10|Now installed by x11/gnome-menus x11/kdelibs4-experimental|x11/kdelibs4|2010-05-11|Now integrated to x11/kdelibs4 www/mod_extract_forwarded2||2010-05-12|Use www/mod_extract_forwarded instead misc/ldconfig_compat||2010-05-14|Supported releases don't need the port anymore devel/nx||2010-05-14|Remove due math/py-networkx be the same port and with more appropriated name math/libranlib|math/librandlib|2010-05-17|Project renamed print/hplip3|print/hplip|2010-05-17|hplip port updated to 3.X version emulators/sdlmame|emulators/mame|2010-05-17|SDL port has been integrated into mainstream devel/apr|devel/apr1|2010-05-18|Renamed to devel/apr1 science/pyNN|science/pynn|2010-05-19|Rename to science/pynn databases/postgresql-contrib|databases/postgresql82-contrib|2010-05-20|Use databases/postgresqlNN-contrib, select version to match your PostgreSQL server lang/yorick-doc||2010-05-20|Has expired: up-to-date docs are included in the lang/yorick port devel/perforce|devel/p4|2010-05-20|Split into multiple ports net/dgd-net||2010-05-24|Has expired: all network functionality is included in net/dgd archivers/hs-zip-archive-ghc|archivers/hs-zip-archive|2010-05-24|Renamed: No need for suffix devel/hs-binary-ghc|devel/hs-binary|2010-05-24|Renamed: No need for suffix devel/darcs|devel/hs-darcs|2010-05-24|Renamed: It has become a hackage transcript devel/hs-language-c-ghc|devel/hs-language-c|2010-05-24|Renamed: No need for suffix devel/hs-lazysmallcheck-ghc|devel/hs-lazysmallcheck|2010-05-24|Renamed: No need for suffix devel/hs-pcre-light-ghc|devel/hs-pcre-light|2010-05-24|Renamed: No need for suffix devel/hs-utf8-string-ghc|devel/hs-utf8-string|2010-05-24|Renamed: No need for suffix graphics/hs-HGL-ghc|graphics/hs-HGL|2010-05-24|Renamed: No need for suffix ports-mgmt/porte|ports-mgmt/hs-porte|2010-05-24|Renamed: It has become a hackage transcript security/hs-digest-ghc|security/hs-digest|2010-05-24|Renamed: No need for suffix textproc/hs-haxml|textproc/hs-HaXml|2010-05-24|Renamed: Brought in sync with HackageDB textproc/hs-highlighting-kate-ghc|textproc/hs-highlighting-kate|2010-05-24|Renamed: No need for suffix textproc/hs-polyparse-ghc|textproc/hs-polyparse|2010-05-24|Renamed: No need for suffix textproc/pandoc|textproc/hs-pandoc|2010-05-24|Renamed: It has become a Cabal transcript x11/hs-x11-ghc|x11/hs-X11|2010-05-24|Renamed: Brought in sync with HackageDB and no need for suffix x11/hs-x11-xft-ghc|x11/hs-X11-xft|2010-05-24|Renamed: Brought in sync with HackageDB and no need for suffix x11/xmobar|x11/hs-xmobar|2010-05-24|Renamed: It has become a hackage transcript x11-toolkits/hs-OpenGLRaw-ghc|x11-toolkits/hs-OpenGLRaw|2010-05-24|Renamed: No need for suffix x11-toolkits/hs-GLURaw-ghc|x11-toolkits/hs-GLURaw|2010-05-24|Renamed: No need for suffix x11-toolkits/hs-opengl-ghc|x11-toolkits/hs-OpenGL|2010-05-24|Renamed: Brought in sync with HackageDB and no need for suffix x11-toolkits/hs-glut-ghc|x11-toolkits/hs-GLUT|2010-05-24|Renamed: Brought in sync with HackageDB and no need for suffix x11-wm/xmonad|x11-wm/hs-xmonad|2010-05-24|Renamed: It has become a Cabal transcript x11-wm/xmonad-contrib|x11-wm/hs-xmonad-contrib|2010-05-24|Renamed: It has become a Cabal transcript devel/ruby-game|devel/rubygem-rubygame|2010-05-24|Use devel/rubygem-rubygame instead devel/py-ro||2010-05-25|Use devel/py-pyro instead devel/runawk|lang/runawk|2010-05-31|Port duplicate with lang/runawk misc/ipod-sharp|audio/ipod-sharp|2010-06-02|Fix category lang/pike72|lang/pike76|2010-06-02|Has expired: Please use pike76 or pike78 lang/pexts||2010-06-02|Depends on expired port lang/pike72 databases/ptop||2010-06-04|Broken with no update from maintainer or upstream deskutils/dolphin-plugins-mplayerthumbs||2010-06-05|No longer supported by upstream irc/p5-IRC|irc/p5-Bot-BasicBot|2010-06-07|Has been deceased for over 5 years emulators/linux_base-gentoo-stage1||2010-06-08|Expired: please use emulators/linux_base-gentoo-stage3 emulators/linux_dist-gentoo-stage1||2010-06-08|Expired: please use emulators/linux_dist-gentoo-stage3 www/weave|www/firefox-sync|2010-06-09|Project was renamed misc/freedialog||2010-06-10|Removed, has been in base for a decade print/lyx15||2010-06-14|Removed, print/lyx has been updated to the latest version sysutils/tinybsd||2010-06-18|Incorporated into base system long ago www/mythweb|www/mythplugin-mythweb|2010-06-21|Renamed: Common prefix for all MythTV plugins www/firefox3|www/firefox35|2010-06-23|Upstream support dropped www/firefox3-i18n|www/firefox35-i18n|2010-06-23|Upstream support dropped security/krb4||2010-06-26|Security vulnerability and no longer developed www/linux-mozilla|www/linux-seamonkey|2010-06-27|Security vulnerabilities and abandoned upstream since 2006 security/audit||2010-07-01|Development has been discontinued net/isc-dhcp30-client|net/isc-dhcp31-client|2010-07-09|Has expired: deprecated upstream since March 2009 net/isc-dhcp30-relay|net/isc-dhcp31-relay|2010-07-09|Has expired: deprecated upstream since March 2009 net/isc-dhcp30-server|net/isc-dhcp31-server|2010-07-09|Has expired: deprecated upstream since March 2009 net/nss_ldapd|net/nss-pam-ldapd|2010-07-16|Project was renamed sysutils/bacula-client-devel||2010-07-16|Removed sysutils/bacula-server-devel||2010-07-16|Removed java/eclipse-v4all||2010-07-16|Not useful with Eclipse 3.x irc/kvirc-devel||2010-07-17|irc/kvirc has been updated to the latest version www/p5-Plack-Server-AnyEvent||2010-07-19|Use www/p5-Twiggy instead science/qelectrotech|cad/qelectrotech|2010-07-21|Fix category mail/squirrelmail-compatibility-plugin1|mail/squirrelmail-compatibility-plugin|2010-07-21|Has expired: use mail/squirrelmail-compatibility-plugin mail/squirrelmail-newuser_wiz-plugin|mail/squirrelmail-askuserinfo-plugin|2010-07-21|Has expired: use mail/squirrelmail-askuserinfo-plugin textproc/mini-xml|textproc/mxml|2010-07-25|Duplicate port net/gir-repository-avahi|net/avahi-app|2010-07-25|Handled by net/avahi-app now www/neonpp||2010-07-30|Does not build with neon 0.28 and above www/neon28|www/neon29|2010-07-30|Replaced by neon 0.29.x sysutils/aaccli||2010-08-03|Has expired: see sysutils/arcconf instead, no longer maintained by Adaptec mail/moztraybiff|mail/mail-notification|2010-08-03|Depends on obsolete Thunderbird 2.0 deskutils/lightning-xpi|deskutils/lightning|2010-08-03|Depends on obsolete Thunderbird 2.0 sysutils/zfSnap|sysutils/zfsnap|2010-08-03|Change name to lower case mail/lightning|deskutils/lightning|2010-08-03|Upstream development discontinued devel/py_otp_interface|devel/py-interface|2010-08-06|Duplicate py-interface port has better distutils handling www/mplayer-plugin|www/gecko-mediaplayer|2010-08-08|Upstream support dropped lang/plt-scheme|lang/racket|2010-08-08|Upstream development discontinued emulators/sdlmess|emulators/mess|2010-08-08|SDL port has been integrated into mainstream security/libassuan-1||2010-08-08|This is an ex-library (Superseded by security/libassuan, but not compatible) www/mod_webapp||2010-08-08|Removed net/p5-IO-INET6|net/p5-IO-Socket-INET6|2010-08-09|Renamed net-p2p/ktorrent-devel||2010-08-11|Obsoleted: please use net-p2p/ktorrent2 or net-p2p/ktorrent multimedia/mpeg4ip-libmp4v2|multimedia/mp4v2|2010-08-11|Superseded by multimedia/mp4v2 lang/ifc7||2010-08-12|Distfile no longer available multimedia/kaffeine-devel|multimedia/kaffeine|2010-08-14|New non-development version www/peacock||2010-08-17|Has runtime errors, upstream development discontinued www/gtkhtml38||2010-08-17|Removed, because there are no more users of this library security/isolate||2010-08-17|Security vulnerability www/wordpress-mu|www/wordpress|2010-08-19|Multiuser support was incorporate in the upstream version archivers/py-tarfile||2010-08-21|Has expired: all development activity in this port has been merged into mainline Python after 2.4 www/rssdler|www/py-rssdler|2010-08-21|Rename to consistency with other Python ports www/mod_webobjects||2010-08-23|Broken for 6+ months, unmaintained www/woadaptor||2010-08-23|Broken for 6+ months, unmaintained www/woadaptor-cgi||2010-08-23|Broken for 6+ months, unmaintained x11-toolkits/ruby-fox12||2010-08-23|Removed x11-toolkits/fxscintilla-fox12||2010-08-23|Removed x11-toolkits/fox12||2010-08-23|Has expired: Unsupported, please use x11-toolkits/fox14 or x11-toolkits/fox16 instead editors/mondrian||2010-08-23|Removed devel/freeride||2010-08-23|Removed devel/freebase||2010-08-23|Removed x11-themes/kde4-windeco-aurorae||2010-08-23|Integrated into x11/kdebase4-workspace x11-toolkits/fxscintilla-fox14||2010-08-23|Removed net/tintin++-devel|net/tintin++|2010-08-24|net/tintin++-devel is no longer devel, merged back to net/tintin++ audio/gmm|audio/gogglesmm|2010-08-24|Project was renamed irc/irssi-xmpp-devel||2010-08-25|Devel is unmaintained and older than stable www/lighttpd-mysqlauth|www/lighttpd|2010-08-28|Integrated into www/lighttpd games/jfduke3d||2010-08-28|Development ceased; see games/eduke32 for alternative www/dotproject-devel||2010-08-30|Older than stable port and unmaintained www/dokuwiki-devel||2010-08-30|Older than stable port and unmaintained www/linux-seamonkey-devel||2010-08-30|Older than stable port and unmaintained chinese/gcin-devel||2010-08-31|Older than stable port, broken and unmaintained graphics/xfractint-devel||2010-08-31|Older than stable port and unmaintained misc/kcd-devel||2010-08-31|Older than stable port and unmaintained sysutils/logtool-devel||2010-08-31|Older than stable port and unmaintained textproc/smartdoc-devel||2010-08-31|Older than stable port and unmaintained comms/spandsp-devel5||2010-08-31|Older than stable port and unmaintained french/pluxml-devel||2010-08-31|Stable was removed 2 years ago, doesn't make sense to keep -devel graphics/lphoto||2010-08-31|Has expired: broken mail/ngmp||2010-08-31|Has expired: does not compile and no longer supported by upstream multimedia/libdvdnav-mplayer||2010-09-02|Removed in favor of updated multimedia/libdvdnav lang/gcc43|lang/gcc44|2010-09-04|Superseded by gcc44 or gcc45 databases/sybase-ocsd||2010-09-04|Distfile(s) no longer available editors/staroffice5||2010-09-04|Distfile(s) no longer available editors/staroffice52||2010-09-04|Distfile(s) no longer available editors/staroffice60||2010-09-04|Distfile(s) no longer available editors/staroffice70||2010-09-04|Distfile(s) no longer available emulators/linux-vmware-toolbox2||2010-09-04|Distfile(s) no longer available french/staroffice52||2010-09-04|Distfile(s) no longer available german/staroffice5||2010-09-04|Distfile(s) no longer available german/staroffice52||2010-09-04|Distfile(s) no longer available german/staroffice70||2010-09-04|Distfile(s) no longer available java/simplicity||2010-09-04|Distfile(s) no longer available lang/icc7||2010-09-04|Distfile(s) no longer available portuguese/staroffice52||2010-09-04|Distfile(s) no longer available sysutils/linux-acu||2010-09-04|Distfile(s) no longer available lang/ficl-devel|lang/ficl|2010-09-07|Moved to lang/ficl since it's a stable version games/abridge||2010-09-07|Broken, abandoned upstream deskutils/linux-sunbird|deskutils/lightning|2010-09-07|Upstream development discontinued deskutils/sunbird|deskutils/lightning|2010-09-07|Upstream development discontinued deskutils/sunbird-i18n||2010-09-07|Upstream development discontinued audio/audacious-crossfade||2010-09-08|Broken for 6+ months, unmaintained audio/ecamegapedal||2010-09-08|Has expired: Abandoned since 2004, please use audio/jack-rack or audio/creox instead comms/asmodem||2010-09-08|Broken for 6+ months, unmaintained comms/ltmdm||2010-09-08|Broken for 6+ months, unmaintained comms/yawmppp||2010-09-08|Broken for 6+ months, unmaintained devel/p5-ORBit||2010-09-08|Broken for 6+ months, unmaintained emulators/p-interp||2010-09-08|Broken for 6+ months, unmaintained graphics/visionegg||2010-09-08|Broken for 6+ months, unmaintained japanese/okphone||2010-09-08|Broken for 6+ months, unmaintained java/openjit||2010-09-08|Broken for 6+ months, unmaintained multimedia/xmps-win32-plugin||2010-09-08|Broken for 6+ months, unmaintained net-mgmt/tknetmon||2010-09-08|Broken for 6+ months, unmaintained net/arpd||2010-09-08|Broken for 6+ months, unmaintained net/vomit||2010-09-08|Broken for 6+ months, unmaintained sysutils/xwipower||2010-09-08|Broken for 6+ months, unmaintained www/lws||2010-09-08|Broken for 6+ months, unmaintained net-p2p/javadc||2010-09-08|Has expired: is ancient, unmaintained, works only with JDK 1.3, no master site net/pathchar||2010-09-08|Has expired: has been broken for 2+ years, no sources available www/linux-nvu|www/kompozer|2010-09-08|Has expired: NVU 1.0 last release June 2005, use www/kompozer instead print/cupsddk||2010-09-09|Now part of print/cups-base databases/mongodb-devel||2010-09-11|Older than databases/mongodb japanese/tdiary-devel||2010-09-12|Removed www/tdiary-devel||2010-09-12|Removed multimedia/playd2|multimedia/playd|2010-09-13|Has expired: Use multimedia/playd instead mail/mailscanner-devel|mail/mailscanner|2010-09-14|Removed, mail/mailscanner is newer databases/sqlite-ext-inet||2010-09-14|Has expired: Please install databases/sqlite-ext-mobigroup instead editors/koffice-kde4-l10n-fy||2010-09-14|Has expired editors/koffice-kde4-l10n-hne||2010-09-14|Has expired graphics/xaralx-devel||2010-09-14|Has expired: Does not compile with png-1.4 and latest version is from Aug 2006 graphics/xaralx||2010-09-14|Has expired: Does not compile with png-1.4 and latest version is from Aug 2006 misc/kde4-l10n-bn_IN||2010-09-14|Has expired misc/kde4-l10n-hne||2010-09-14|Has expired misc/kde4-l10n-ku||2010-09-14|Has expired multimedia/vlconwooztalk||2010-09-14|Has expired: wooztalk website not responding as of 20100731 net-im/wooztalk||2010-09-14|Has expired: wooztalk website not responding as of 20100731 russian/php_doc||2010-09-14|Has expired: Support for the Russian translation of the PHP manual seems to have stopped sysutils/ipmi-kmod||2010-09-14|Has expired: in base system since 6.2-RELEASE www/xpi-dailymotiononwooztalk||2010-09-14|Has expired: wooztalk website not responding as of 20100731 www/xpi-deezeronwooztalk||2010-09-14|Has expired: wooztalk website not responding as of 20100731 www/xpi-firefoxonwooztalk||2010-09-14|Has expired: wooztalk website not responding as of 20100731 www/xpi-googlevideoonwooztalk||2010-09-14|Has expired: wooztalk website not responding as of 20100731 www/xpi-imeemonwooztalk||2010-09-14|Has expired: wooztalk website not responding as of 20100731 www/xpi-jiwaonwooztalk||2010-09-14|Has expired: wooztalk website not responding as of 20100731 www/xpi-lastfmonwooztalk||2010-09-14|Has expired: wooztalk website not responding as of 20100731 www/xpi-vimeoonwooztalk||2010-09-14|Has expired: wooztalk website not responding as of 20100731 www/xpi-youtubeonwooztalk||2010-09-14|Has expired: wooztalk website not responding as of 20100731 x11/chameleon||2010-09-14|Has expired: No longer under development, master site disappeared years ago net/csup||2010-09-14|Has expired: is already included in base system of all supported releases textproc/py-Pootle||2010-09-15|Removed devel/autoconf262|devel/autoconf267|2010-09-15|Migration to autoconf-2.67 editors/vim6||2010-09-17|Has expired: Outdated, superseded by editors/vim7 and has multiple security issues editors/vim6+ruby||2010-09-17|Has expired: Outdated, superseded by editors/vim7 and has multiple security issues sysutils/cdrtools-cjk|sysutils/cdrtools|2010-09-17|Obsoleted by iconv support in mainstream kit lang/pfe-devel|lang/pfe|2010-09-20|Moved to lang/pfe since it's a stable version archivers/p5-Compress-Zlib|archivers/p5-IO-Compress|2010-09-21|Replaced by archivers/p5-IO-Compress archivers/p5-IO-Compress-Base|archivers/p5-IO-Compress|2010-09-21|Replaced by archivers/p5-IO-Compress archivers/p5-IO-Compress-Bzip2|archivers/p5-IO-Compress|2010-09-21|Replaced by archivers/p5-IO-Compress archivers/p5-IO-Compress-Zlib|archivers/p5-IO-Compress|2010-09-21|Replaced by archivers/p5-IO-Compress audio/linux-nerodigitalaudio|audio/linux-neroaaccodec|2010-09-22|Project was renamed devel/automake16||2010-09-22|Outdated, no longer required by any port devel/automake17||2010-09-22|Outdated, was not being used by any port devel/automake18||2010-09-22|Outdated, ports (2) migrated to automake19 devel/automake15||2010-09-23|Outdated, ports migrated to automake19 www/xpi-gbutts|www/xpi-google_shortcuts|2010-09-28|Plugin was renamed mail/sympa-elixus||2010-09-28|Has expired: no longer maintained, no longer fetchable, no longer builds with sympa net-mgmt/zabbix16-server||2010-10-01|Has expired: Development has ceased. Please upgrade to Zabbix 1.8 net-mgmt/zabbix16-agent||2010-10-01|Has expired: Development has ceased. Please upgrade to Zabbix 1.8 net-mgmt/zabbix16-frontend||2010-10-01|Has expired: Development has ceased. Please upgrade to Zabbix 1.8 net-mgmt/zabbix16-proxy||2010-10-01|Has expired: Development has ceased. Please upgrade to Zabbix 1.8 net-p2p/mutella||2010-10-01|Has expired: No longer under active development www/xpi-hit-a-hint||2010-10-01|Has expired: Development has been ceased and not compatible with Firefox > 2 www/xpi-preferential||2010-10-01|Has expired: Development has been ceased and not compatible with Firefox > 2 www/xpi-statusbarclock||2010-10-01|Has expired: Development has been ceased and not compatible with Firefox > 2 devel/cego-base|devel/lfc|2010-10-02|Project was renamed devel/cego-xml|devel/lfcxml|2010-10-02|Project was renamed www/p5-WWW-Pastebin-RafbNet-Create||2010-10-02|http://rafb.net service is dead games/daimonin-client|games/daimonin|2010-10-04|Renamed sysutils/rsyslog55|sysutils/rsyslog5|2010-10-05|Renamed sysutils/rsyslog55-dbi|sysutils/rsyslog5-dbi|2010-10-05|Renamed sysutils/rsyslog55-gnutls|sysutils/rsyslog5-gnutls|2010-10-05|Renamed sysutils/rsyslog55-gssapi|sysutils/rsyslog5-gssapi|2010-10-05|Renamed sysutils/rsyslog55-mysql|sysutils/rsyslog5-mysql|2010-10-05|Renamed sysutils/rsyslog55-pgsql|sysutils/rsyslog5-pgsql|2010-10-05|Renamed sysutils/rsyslog55-relp|sysutils/rsyslog5-relp|2010-10-05|Renamed sysutils/rsyslog55-rfc3195|sysutils/rsyslog5-rfc3195|2010-10-05|Renamed sysutils/rsyslog55-snmpl|sysutils/rsyslog5-snmp|2010-10-05|Renamed net-p2p/amule2|net-p2p/amule|2010-10-05|Split to -devel and non-devel ports devel/automake19||2010-10-07|No longer required by any port devel/automake110||2010-10-07|No longer required by any port japanese/p5-jcode.pl|japanese/jcode.pl|2010-10-10|Duplicate port www/p5-Plack-Server-ServerSimple|www/p5-Plack|2010-10-11|Included in p5-Plack now www/trac-multirepos||2010-10-11|Has expired: Multiple repositories support has been merged in trunk, please use Trac 0.12+ (www/trac) instead devel/p5-P4||2010-10-14|Has expired: Depends of p5-P4-Client, which is DEPRECATED devel/p5-P4-Client||2010-10-14|Has expired: has been broken for 11 months net-p2p/btpeer||2010-10-14|Has expired: Does not build with net/Sockets and is unmaintained net-mgmt/net-snmp4||2010-10-14|Has expired: Use net-mgmt/net-snmp port instead net/gkrellm_snmp||2010-10-14|Has expired: Depends of net-snmp4, that is deprecated also and will be removed soon net/Sockets-devel||2010-10-14|Has expired: Older than net/Sockets and unmaintained devel/clang|lang/clang|2010-10-14|Compilers typically live in the lang category security/ssh2||2010-10-15|Has expired: abandoned upstream security/ssh2-nox11||2010-10-15|Has expired: abandoned upstream devel/autoconf267|devel/autoconf268|2010-10-16|Bump net/samba3||2010-10-18|Has expired: Unsupported by the upstream. Please, consider to upgrade net/samba32||2010-10-18|Has expired: Unsupported by the upstream. Please, consider to upgrade net/samba33||2010-10-18|Has expired: Unsupported by the upstream. Please, consider to upgrade japanese/samba3||2010-10-18|Has expired: Unsupported by the upstream. Please, consider to upgrade net/py-samba||2010-10-18|Has expired: Unsupported by the upstream. Please, consider to upgrade security/samba-vscan||2010-10-18|Removed www/firefox3-devel|www/firefox|2010-10-24|Upstream development focuses on Firefox 4.0 editors/vim5||2010-10-26|Has expired: Outdated, superseded by editors/vim7 and has security issues sysutils/sfdisk||2010-10-27|Has expired: All supported FreeBSD versions now have sade, sfdisk 0.2 is outdated sysutils/synergy-plus|sysutils/synergy|2010-11-01|Synergy+ and Synergy have merged ftp/kwebget||2010-11-04|Has expired: Development has ceased multimedia/clive-utils||2010-11-04|Has expired: development has ceased; use multimedia/umph instead ports-mgmt/barry||2010-11-04|Has expired: Development has ceased www/wb0||2010-11-04|Has expired: Development has ceased x11/e17-module-bling|x11-wm/e17-module-bling|2010-11-07|Fix category x11/e17-module-calendar|x11-wm/e17-module-calendar|2010-11-07|Fix category x11/e17-module-cpu|x11-wm/e17-module-cpu|2010-11-07|Fix category x11/e17-module-deskshow|x11-wm/e17-module-deskshow|2010-11-07|Fix category x11/e17-module-flame|x11-wm/e17-module-flame|2010-11-07|Fix category x11/e17-module-language|x11-wm/e17-module-language|2010-11-07|Fix category x11/e17-module-mail|x11-wm/e17-module-mail|2010-11-07|Fix category x11/e17-module-mem|x11-wm/e17-module-mem|2010-11-07|Fix category x11/e17-module-mixer|x11-wm/e17-module-mixer|2010-11-07|Fix category x11/e17-module-moon|x11-wm/e17-module-moon|2010-11-07|Fix category x11/e17-module-rain|x11-wm/e17-module-rain|2010-11-07|Fix category x11/e17-module-screenshot|x11-wm/e17-module-screenshot|2010-11-07|Fix category x11/e17-module-slideshow|x11-wm/e17-module-slideshow|2010-11-07|Fix category x11/e17-module-snow|x11-wm/e17-module-snow|2010-11-07|Fix category x11/e17-module-uptime|x11-wm/e17-module-uptime|2010-11-07|Fix category x11/e17-module-weather|x11-wm/e17-module-weather|2010-11-07|Fix category x11/e17-module-winselector|x11-wm/e17-module-winselector|2010-11-07|Fix category devel/libisc||2010-11-08|Has expired: Unlikely to be used emulators/vmware-guestd3||2010-11-08|Has expired: Depends of misc/compat3x, that is deprecated and set to be removed emulators/vmware-tools3||2010-11-08|Has expired: Depends of misc/compat3x, that is deprecated and set to be removed misc/compat3x||2010-11-08|Has expired: Only FreeBSD 6.4+ are supported in ports misc/bidwatcher||2010-11-08|Has expired: Obsoleted by JBidwatcher and changes at http://ebay.com security/vscan||2010-11-08|Has expired: Depends of misc/compat3x, that is deprecated and set to be removed www/ssserver||2010-11-08|Has expired: Depends of misc/compat3x, that is deprecated and set to be removed graphics/qtpfsgui|graphics/luminance|2010-11-12|Project has been renamed devel/gir-repository-gconf2|devel/gconf2|2010-11-20|Merged into gconf2 x11-fm/gir-repository-nautilus|x11-fm/nautilus|2010-11-20|Merged into nautilus devel/gir-repository-libsoup|devel/libsoup|2010-11-20|Merged into libsoup x11-toolkits/gir-repository-gtksourceview2|x11-toolkits/gtksourceview2|2010-11-20|Merged into gtksourceview2 security/gir-repository-gnome-keyring||2010-11-20|Not buildable devel/gir-repository-dbus|devel/gobject-introspection|2010-11-20|Merged into gobject-introspection net/asterisk-addons|net/asterisk14-addons|2010-11-22|Renamed via repocopy devel/gdb6|devel/gdb66|2010-11-24|Directory renamed net-p2p/eiskaltdc|net-p2p/eiskaltdcpp-qt|2010-11-26|GUI ports separated japanese/uim-canna|textproc/uim|2010-11-26|Integrated into textproc/uim japanese/uim-prime|textproc/uim|2010-11-26|Integrated into textproc/uim www/google_shortcuts|www/xpi-google_shortcuts|2010-11-26|Use www/xpi-google_shortcuts instead x11-toolkits/ruby-gtksourceview||2010-11-27|Removed misc/libpri-bristuff||2010-11-28|Superseded by asterisk 1.8 net/asterisk-bristuff||2010-11-28|Superseded by asterisk 1.8 www/p5-Mojo|www/p5-Mojolicious|2010-11-29|Project's distfile name has changed shells/bash-completion-classic|shells/bash-completion|2010-11-29|amd64 workaround no longer required devel/p5-usb|devel/p5-Device-USB|2010-11-29|Directory renamed www/phpwebgallery|www/piwigo|2010-11-29|Project renamed net/asterisk12||2010-11-30|EOL'ed upstream on 21 Nov 2010 net/asterisk12-app-ldap||2010-11-30|EOL'ed upstream on 21 Nov 2010 dns/bind9||2010-12-01|EOL - Update to dns/bind97 or dns/bind96 archivers/linux-par2cmdline||2010-12-04|Has expired: Native version available audio/bmp-musepack||2010-12-04|Has expired: does not build with audio/musepack audio/libmpcdec|audio/musepack|2010-12-04|Has expired: superseded by audio/musepack audio/py-musepack||2010-12-04|Has expired: does not build with audio/musepack chinese/chinput3||2010-12-04|Has expired: Development has ceased emulators/dynagen-devel||2010-12-04|Has expired: Please install emulators/dynagen instead net-p2p/gift-fasttrack||2010-12-04|Has expired: unmaintained upstream net-p2p/gift-gnutella||2010-12-04|Has expired: unmaintained upstream net-p2p/gift-openft||2010-12-04|Has expired: unmaintained upstream net-p2p/pyslsk||2010-12-04|Has expired: unmaintained upstream, use net-p2p/nicotine-plus security/pamsfs||2010-12-04|Has expired: SFS is dead, this project is dead, and site is gone www/p5-Catalyst-Plugin-CommandLine||2010-12-04|Has expired: The module is not needed anymore; with new Catalyst (at least 5.7014) it works out of the box devel/autoconf268|devel/autoconf|2010-12-08|Autotools cleanup devel/automake111|devel/automake|2010-12-08|Autotools cleanup devel/libtool22|devel/libtool|2010-12-08|Autotools cleanup devel/libltdl22|devel/libltdl|2010-12-08|Autotools cleanup devel/rubygem-image_science|graphics/rubygem-image_science|2010-12-11|Moved category emulators/mupen64plus-base|emulators/mupen64plus-core|2010-12-13|Port was renamed emulators/mupen64plus-sdlaudio|emulators/mupen64plus-audio-sdl|2010-12-13|Port was renamed emulators/mupen64plus-sdlinput|emulators/mupen64plus-input-sdl|2010-12-13|Port was renamed emulators/mupen64plus-rsp|emulators/mupen64plus-rsp-hle|2010-12-13|Port was renamed emulators/mupen64plus-rice|emulators/mupen64plus-video-rice|2010-12-13|Port was renamed emulators/mupen64plus-dummyaudio||2010-12-13|Port was removed, now it is obsolete emulators/mupen64plus-dummyvideo||2010-12-13|Port was removed, now it is obsolete emulators/mupen64plus-glide||2010-12-13|Port was removed, now it is obsolete emulators/mupen64plus-gln64||2010-12-13|Port was removed, now it is obsolete emulators/mupen64plus-input||2010-12-13|Port was removed, now it is obsolete misc/zaptel||2010-12-14|Superseded by misc/dahdi japanese/mozilla-jlp||2010-12-15|Has expired: Depends on obsolete port www/mozilla devel/icu2|devel/icu|2010-12-16|Removed: now obsolete and unused please use newer devel/icu instead devel/icu4|devel/icu|2010-12-17|Removed: devel/icu is now following 4.x version multimedia/flv2mpeg4||2010-12-23|Abandoned upstream databases/mysql55-scripts||2010-12-27|Merged in other mysql ports databases/p5-sqlrelay||2010-12-31|Has expired: broken and upstream disappeared devel/php-dbg2||2010-12-31|Has expired: No upstream support dns/fourcdns||2010-12-31|Has expired: upstream has disappeared emulators/win4bsd||2010-12-31|Has expired: Development has ceased and distfile is no longer available french/mozilla-flp||2010-12-31|Has expired: www/seamonkey port is deprecated. Consider using the www/firefox-i18n french/xtel||2010-12-31|Has expired: Minitel services will be discontinued at the end of 2010 ftp/ftpq||2010-12-31|Has expired: upstream has disappeared graphics/paintlib||2010-12-31|Has expired: does not compile with new tiff and no longer maintained upstream graphics/g3dviewer||2010-12-31|Has expired: does not build with gcc 4.2, upstream disappeared lang/scriba||2010-12-31|Has expired: Does not compile with gcc 4.2+, looks like abandonware math/rascal||2010-12-31|Has expired: Broken on every arch since 2008, looks like abandonware net-mgmt/nrg|net-mgmt/cacti|2010-12-31|Has expired: Project has vanished. Use cacti instead security/hostsentry||2010-12-31|Has expired: Project is dead sysutils/kcube||2010-12-31|Has expired: Project has vanished www/cybercalendar||2010-12-31|Has expired: has been unmaintained since 2001 and is unusable with dates after 2010 (see ports/150974) www/flock||2010-12-31|Has expired: Flock 3 moves from Firefox to Chromium www/linux-flock||2010-12-31|Has expired: Flock 3 moves from Firefox to Chromium x11-clocks/xtu||2010-12-31|Has expired: Looks like abandonware java/tya||2010-12-31|Has expired: looks like abandonware and does not compile with gcc4.2 net-p2p/qbittorrent-22|net-p2p/qbittorrent|2011-01-01|Old version no longer updated. Try net-p2p/qbittorrent dns/bind95||2011-01-01|Entered EOL 2010-09 - Update to dns/bind97 or dns/bind96 www/mozilla|www/seamonkey2|2011-01-01|Unmaintained upstream for years and has security issues security/lxnb||2011-01-02|Has expired: Development has ceased, mastersite disappeared x11-wm/lxsession-lite|x11-wm/lxsession|2011-01-02|Has expired: Superseded by x11-wm/lxsession audio/emphasis||2011-01-03|Has expired: abandoned upstream converters/ecore-txt||2011-01-03|Has expired: abandoned upstream deskutils/estickies||2011-01-03|Has expired: abandoned upstream devel/ecore-job||2011-01-03|Has expired: abandoned upstream devel/engrave||2011-01-03|Has expired: abandoned upstream devel/evfs||2011-01-03|Has expired: abandoned upstream devel/ruby-ecore||2011-01-03|Has expired: abandoned upstream graphics/exhibit||2011-01-03|Has expired: abandoned upstream graphics/epsilon||2011-01-03|Has expired: abandoned upstream graphics/esmart||2011-01-03|Has expired: abandoned upstream graphics/ruby-edje||2011-01-03|Has expired: abandoned upstream graphics/ruby-esmart||2011-01-03|Has expired: abandoned upstream graphics/ruby-evas||2011-01-03|Has expired: abandoned upstream graphics/ruby-redact||2011-01-03|Has expired: abandoned upstream multimedia/eclair||2011-01-03|Has expired: abandoned upstream security/phpmyid||2011-01-03|Has expired: Development has ceased sysutils/ecore-config||2011-01-03|Has expired: abandoned upstream sysutils/extrackt||2011-01-03|Has expired: abandoned upstream textproc/exml||2011-01-03|Has expired: abandoned upstream www/mod_accesscookie||2011-01-03|Has expired: upstream is gone www/mod_vdbh||2011-01-03|Has expired: upstream is gone www/mod_auth_any||2011-01-03|Has expired: upstream is gone www/mod_log_data||2011-01-03|Has expired: upstream is gone and will be unsupported by ASF when 2.4.0 is release, migrate to 2.2.x+ now x11-fm/entropyfm||2011-01-03|Has expired: abandoned upstream x11-themes/e17-splash-fortune||2011-01-03|Has expired: abandoned upstream x11-themes/e17-splash-shiny||2011-01-03|Has expired: abandoned upstream x11-themes/e17-splash-takara||2011-01-03|Has expired: abandoned upstream x11-themes/e17-theme-blue_eyed||2011-01-03|Has expired: abandoned upstream x11-themes/e17-theme-dali||2011-01-03|Has expired: abandoned upstream x11-themes/e17-theme-gant||2011-01-03|Has expired: abandoned upstream x11-themes/e17-theme-japan2007||2011-01-03|Has expired: abandoned upstream x11-themes/e17-theme-kor||2011-01-03|Has expired: abandoned upstream x11-themes/e17-theme-milky||2011-01-03|Has expired: abandoned upstream x11-themes/e17-theme-night_bling||2011-01-03|Has expired: abandoned upstream x11-themes/e17-theme-simply_white||2011-01-03|Has expired: abandoned upstream x11-themes/e17-splash-azul||2011-01-03|Has expired: abandoned upstream x11-themes/e17-splash-blue||2011-01-03|Has expired: abandoned upstream x11-themes/e17-splash-clean||2011-01-03|Has expired: abandoned upstream x11-themes/e17-splash-logo||2011-01-03|Has expired: abandoned upstream x11-toolkits/etk||2011-01-03|Has expired: abandoned upstream x11-toolkits/ewl||2011-01-03|Has expired: abandoned upstream x11-toolkits/enhance||2011-01-03|Has expired: abandoned upstream x11-wm/e17-module-bling||2011-01-03|Has expired: abandoned upstream x11-wm/e17-module-mixer||2011-01-03|Has expired: abandoned upstream x11-wm/e17-utils||2011-01-03|Has expired: abandoned upstream x11/elicit||2011-01-03|Has expired: abandoned upstream x11/enity||2011-01-03|Has expired: abandoned upstream x11/examine||2011-01-03|Has expired: abandoned upstream x11/ecore-desktop||2011-01-03|Has expired: abandoned upstream x11/enterminus||2011-01-03|Removed deskutils/gnome-pim||2011-01-03|Removed due to x11/libcapplet broke mail/pmail||2011-01-03|Removed due to x11/libcapplet broke mail/pygmy||2011-01-03|Removed due to x11/libcapplet broke math/scigraphica||2011-01-03|Removed due to x11/libcapplet broke net/geotrace||2011-01-03|Removed due to x11/libcapplet broke security/nofgpg||2011-01-03|Removed due to x11/libcapplet broke sysutils/gnome-control-center1||2011-01-03|Removed due to x11/libcapplet broke www/gtkhtml||2011-01-03|Removed due to x11/libcapplet broke x11/libcapplet||2011-01-03|Removed: broken and unmaintained upstream x11/wmmenu||2011-01-03|Removed due to x11/libcapplet broke x11-toolkits/py-gnome||2011-01-03|Removed due to x11/libcapplet broke www/glibwww||2011-01-04|Removed due to no port depend on it math/octave-forge-spanish|math/octave-forge-es|2011-01-13|Replaced by math/octave-forge-es devel/cvsnt||2011-01-15|Removed: abandoned upstream net-p2p/qbittorrent-23|net-p2p/qbittorrent|2011-01-24|Old, no longer updated. Try net-p2p/qbittorrent dns/staticcharge||2011-01-29|Has expired: abandoned by author shells/bash3|shells/bash|2011-01-29|Has expired: Use shells/bash or shells/bash-static instead shells/bash3-static|shells/bash-static|2011-01-29|Has expired: Use shells/bash or shells/bash-static instead audio/ecawave||2011-02-01|Has expired: has been broken for over one year mail/spamass-rules_du_jour||2011-02-01|Has expired: Use sa-update instead x11/accessx||2011-02-01|Has expired: Project abandoned, mastersite disappeared x11/kde3-apireference||2011-02-01|Has expired: outdated and obsolete misc/py-distutils||2011-02-02|Included in current Python versions databases/qt-ibase-plugin||2011-02-04|Has expired: Port is broken on all supported versions of FreeBSD devel/ace+tao||2011-02-04|Has expired: Outdated and does not compile on any supported version of FreeBSD graphics/ray++||2011-02-04|Has expired: Does not compile on supported versions of FreeBSD japanese/oleo||2011-02-04|Has expired: Does not compile on supported versions of FreeBSD lang/dylan||2011-02-04|Has expired: does not build multimedia/jahshaka||2011-02-04|Has expired: Does not compile on supported versions of FreeBSD audio/libjackasyn|audio/jack|2011-02-11|Has expired: development has ceased; try audio/jack instead audio/xmms-jackasyn|audio/xmms-jack|2011-02-11|Has expired: development has ceased; try audio/xmms-jack instead lang/p5-SQL-Tokenizer|textproc/p5-SQL-Tokenizer|2011-02-13|Moved to a more appropriate category misc/wanpipe||2011-02-14|Removed devel/root||2011-02-21|Has expired: Port does not build on supported versions of FreeBSD net/ztelnet||2011-02-21|Has expired: unfetchable print/kaspaliste||2011-02-21|Has expired: yes sysutils/perf||2011-02-21|Has expired: Does not build on supported versions of FreeBSD databases/redis1||2011-02-24|Removed devel/pmake||2011-02-24|Has expired: does not build on any supported version of FreeBSD net-p2p/linux-agsatellite||2011-02-24|Has expired: the whole service went to cloud databases/redis2||2011-02-25|Removed, use databases/redis instead textproc/py-expat||2011-02-25|Removed, part of Python since 2.5 devel/py-ctypes||2011-02-25|Removed, part of Python since 2.5 security/py-hashlib||2011-02-25|Removed, part of Python since 2.5 www/py-hashlib||2011-02-25|Removed, part of Python since 2.5 x11/gstreamer-plugins-vdpau|multimedia/gstreamer-plugins-vdpau|2011-02-25|Move to the multimedia category x11/gir-repository-babl|x11/babl|2011-02-25|Merged into babl net/gnet|net/gnet2|2011-02-27|No longer maintained or updated, try to use net/gnet2 www/py-turbodjango||2011-02-27|Removed, part of Python since 2.5 www/py-turbosetup||2011-02-27|Removed, part of Python since 2.5 textproc/py-csv||2011-02-27|Removed, part of Python since 2.5 devel/py-uuid||2011-02-27|Removed, part of Python since 2.5 graphics/libv3d||2011-02-28|Has expired: unmaintained and failed to build for months mbone/rat|audio/rat|2011-03-06|Changed category mbone/rat30|audio/rat30|2011-03-06|Changed category mbone/speak_freely|audio/speak_freely|2011-03-06|Changed category mbone/vat|audio/vat|2011-03-06|Changed category mbone/xspeakfree|audio/xspeakfree|2011-03-06|Changed category mbone/vic|multimedia/vic|2011-03-06|Changed category mbone/imm|net/imm|2011-03-06|Changed category mbone/mcl|net/mcl|2011-03-06|Changed category mbone/rqm|net/rqm|2011-03-06|Changed category mbone/rtptools|net/rtptools|2011-03-06|Changed category mbone/sdr|net/sdr|2011-03-06|Changed category mbone/udpcast|net/udpcast|2011-03-06|Changed category mbone/wb|net/wb|2011-03-06|Changed category lang/gnat-doc-html||2011-03-07|Unmaintained and obsolete lang/gnat-doc-info||2011-03-07|Unmaintained and obsolete lang/gnat-doc-ps||2011-03-07|Unmaintained and obsolete lang/gnat-doc-texi||2011-03-07|Unmaintained and obsolete lang/gnat-doc-txt||2011-03-07|Unmaintained and obsolete www/py-cherrypy-devel|www/py-cherrypy|2011-03-15|Removed, use www/py-cherrypy instead science/py-obspy.core|science/py-obspy-core|2011-03-16|Removed, use science/py-obspy-core instead devel/py-unit||2011-03-17|Unmaintained and obsolete, included in Python distribution since 2.1 lang/gnat-gcc42||2011-03-17|Removed unmaintained and obsolete lang/gnat-gcc43||2011-03-17|Removed unmaintained and obsolete lang/gnat-gcc44||2011-03-17|Removed unmaintained and obsolete games/wormux-devel||2011-03-17|Project was renamed games/etuxracer|games/etracer|2011-03-18|Removed it is a duplicate of games/etracer net/p5-Net-IP-Anonymous|net/p5-IP-Anonymous|2011-03-19|Move to a correct directory databases/db50||2011-03-21|Removed, use databases/db51 instead games/wormux|games/warmux|2011-03-21|Project was renamed irc/ircd-hybrid-ru|russian/ircd-hybrid|2011-03-27|Renamed devel/thunar-svn-plugin|devel/thunar-vcs-plugin|2011-03-27|Removed, use devel/thunar-vcs-plugin instead devel/id-utils|devel/idutils|2011-03-28|Project renamed russian/ircd-hybrid-ru|russian/ircd-hybrid|2011-03-30|Renamed java/netbeans3|java/netbeans|2011-03-31|Has expired: old, unmaintained, use java/netbeans instead java/netbeans4|java/netbeans|2011-03-31|Has expired: old, unmaintained, use java/netbeans instead java/netbeans5|java/netbeans|2011-03-31|Has expired: old, unmaintained, use java/netbeans instead textproc/rubygem-bzip2||2011-04-03|Removed accessibility/linux-f8-atk||2011-04-04|Has expired: End of Life since Jan 7, 2009 archivers/linux-f8-ucl||2011-04-04|Has expired: End of Life since Jan 7, 2009 archivers/linux-f8-upx||2011-04-04|Has expired: End of Life since Jan 7, 2009 audio/linux-f8-alsa-lib||2011-04-04|Has expired: End of Life since Jan 7, 2009 audio/linux-f8-arts||2011-04-04|Has expired: End of Life since Jan 7, 2009 audio/linux-f8-esound||2011-04-04|Has expired: End of Life since Jan 7, 2009 audio/linux-f8-freealut||2011-04-04|Has expired: End of Life since Jan 7, 2009 audio/linux-f8-libaudiofile||2011-04-04|Has expired: End of Life since Jan 7, 2009 audio/linux-f8-libogg||2011-04-04|Has expired: End of Life since Jan 7, 2009 audio/linux-f8-libvorbis||2011-04-04|Has expired: End of Life since Jan 7, 2009 audio/linux-f8-mikmod||2011-04-04|Has expired: End of Life since Jan 7, 2009 audio/linux-f8-nas-libs||2011-04-04|Has expired: End of Life since Jan 7, 2009 audio/linux-f8-openal||2011-04-04|Has expired: End of Life since Jan 7, 2009 audio/linux-f8-sdl_mixer||2011-04-04|Has expired: End of Life since Jan 7, 2009 databases/linux-f8-sqlite3||2011-04-04|Has expired: End of Life since Jan 7, 2009 databases/postgresql81-server||2011-04-04|Has expired: EOL; see http://wiki.postgresql.org/wiki/PostgreSQL_Release_Support_Policy databases/postgresql73-server||2011-04-04|Has expired: EOL; see http://wiki.postgresql.org/wiki/PostgreSQL_Release_Support_Policy databases/postgresql74-server||2011-04-04|Has expired: EOL; see http://wiki.postgresql.org/wiki/PostgreSQL_Release_Support_Policy databases/postgresql80-server||2011-04-04|Has expired: EOL; see http://wiki.postgresql.org/wiki/PostgreSQL_Release_Support_Policy devel/linux-f8-libglade||2011-04-04|Has expired: End of Life since Jan 7, 2009 devel/linux-f8-sdl12||2011-04-04|Has expired: End of Life since Jan 7, 2009 devel/linux-f8-allegro||2011-04-04|Has expired: End of Life since Jan 7, 2009 devel/linux-f8-libsigc++20||2011-04-04|Has expired: End of Life since Jan 7, 2009 devel/linux-f8-libglade2||2011-04-04|Has expired: End of Life since Jan 7, 2009 devel/linux-f8-nspr||2011-04-04|Has expired: End of Life since Jan 7, 2009 dns/linux-f8-libidn||2011-04-04|Has expired: End of Life since Jan 7, 2009 emulators/linux_base-f8||2011-04-04|Has expired: End of Life since Jan 7, 2009 emulators/linux_base-f9||2011-04-04|Has expired: End of Life since Jul 10, 2009 emulators/linux_base-fc6||2011-04-04|Has expired: End of Life since December 7, 2007 emulators/linux_base-f7||2011-04-04|Has expired: End of Life since June 13, 2008 ftp/linux-f8-curl||2011-04-04|Has expired: End of Life since Jan 7, 2009 graphics/linux-f8-sdl_image||2011-04-04|Has expired: End of Life since Jan 7, 2009 graphics/linux-f8-ungif||2011-04-04|Has expired: End of Life since Jan 7, 2009 graphics/linux-f8-imlib||2011-04-04|Has expired: End of Life since Jan 7, 2009 graphics/linux-f8-cairo||2011-04-04|Has expired: End of Life since Jan 7, 2009 graphics/linux-f8-dri||2011-04-04|Has expired: End of Life since Jan 7, 2009 graphics/linux-f8-gdk-pixbuf||2011-04-04|Has expired: End of Life since Jan 7, 2009 graphics/linux-f8-jpeg||2011-04-04|Has expired: End of Life since Jan 7, 2009 graphics/linux-f8-png||2011-04-04|Has expired: End of Life since Jan 7, 2009 graphics/linux-f8-libGLU||2011-04-04|Has expired: End of Life since Jan 7, 2009 graphics/linux-f8-libmng||2011-04-04|Has expired: End of Life since Jan 7, 2009 graphics/linux-f8-png10||2011-04-04|Has expired: End of Life since Jan 7, 2009 graphics/linux-f8-tiff||2011-04-04|Has expired: End of Life since Jan 7, 2009 lang/linux-f8-libg2c||2011-04-04|Has expired: End of Life since Jan 7, 2009 lang/linux-f8-tcl84||2011-04-04|Has expired: End of Life since Jan 7, 2009 multimedia/linux-f8-libtheora||2011-04-04|Has expired: End of Life since Jan 7, 2009 net-p2p/dcd||2011-04-04|Has expired: No fetch sources and looks like project abandoned net/straw||2011-04-04|Has expired: abandoned upstream and does not work with Python 2.6+ security/linux-f8-libssh2||2011-04-04|Has expired: End of Life since Jan 7, 2009 security/linux-f8-nss||2011-04-04|Has expired: End of Life since Jan 7, 2009 security/linux-f8-openssl||2011-04-04|Has expired: End of Life since Jan 7, 2009 textproc/linux-f8-libxml2||2011-04-04|Has expired: End of Life since Jan 7, 2009 textproc/linux-f8-scim-gtk||2011-04-04|Has expired: End of Life since Jan 7, 2009 textproc/linux-f8-scim-libs||2011-04-04|Has expired: End of Life since Jan 7, 2009 textproc/linux-f8-expat||2011-04-04|Has expired: End of Life since Jan 7, 2009 textproc/linux-f8-libxml||2011-04-04|Has expired: End of Life since Jan 7, 2009 textproc/linux-f8-aspell||2011-04-04|Has expired: End of Life since Jan 7, 2009 www/linux-f8-flashplugin10||2011-04-04|Has expired: End of Life since Jan 7, 2009 www/mediawiki112||2011-04-04|Has expired: abandoned upstream www/mediawiki113||2011-04-04|Has expired: abandoned upstream www/mediawiki114||2011-04-04|Has expired: abandoned upstream www/mediawiki16||2011-04-04|Has expired: abandoned upstream x11-fonts/linux-f8-fontconfig||2011-04-04|Has expired: End of Life since Jan 7, 2009 x11-themes/gnome-icons-cool-gorilla||2011-04-04|Has expired: no mastersite x11-themes/linux-f8-hicolor-icon-theme||2011-04-04|Has expired: End of Life since Jan 7, 2009 x11-toolkits/linux-f8-gtk||2011-04-04|Has expired: End of Life since Jan 7, 2009 x11-toolkits/linux-f8-gtk2||2011-04-04|Has expired: End of Life since Jan 7, 2009 x11-toolkits/linux-f8-openmotif||2011-04-04|Has expired: End of Life since Jan 7, 2009 x11-toolkits/linux-f8-pango||2011-04-04|Has expired: End of Life since Jan 7, 2009 x11-toolkits/linux-f8-qt33||2011-04-04|Has expired: End of Life since Jan 7, 2009 x11-toolkits/linux-f8-tk84||2011-04-04|Has expired: End of Life since Jan 7, 2009 x11/linux-f8-xorg-libs||2011-04-04|Has expired: End of Life since Jan 7, 2009 databases/erserver||2011-04-04|Has expired: does not compile on FreeBSD 7.x or newer databases/postgresql73-client||2011-04-04|Removed databases/postgresql74-client||2011-04-04|Removed databases/postgresql74-contrib||2011-04-04|Removed databases/postgresql80-client||2011-04-04|Removed databases/postgresql80-contrib||2011-04-04|Removed databases/postgresql81-client||2011-04-04|Removed security/barnyard||2011-04-04|Has expired: use barnyard2 instead graphics/linux_dri-devel|graphics/linux_dri|2011-04-07|Retire: is older than non-devel port math/linux-SHA-1_collision_search_graz||2011-04-07|Has expired: Project discontinued lang/compaq-cc||2011-04-09|Does not work on a supported platform devel/thistest||2011-04-12|Has expired: development has ceased; website disappeared emulators/xmamegui||2011-04-12|Has expired: development has ceased; try emulators/qmc2 instead games/airrox||2011-04-12|Has expired: development has ceased games/bfm||2011-04-12|Has expired: development has ceased; website disappeared games/xracer||2011-04-12|Has expired: has not been developed for 10 years net-p2p/gift-ares||2011-04-12|Has expired: development has ceased; does not work net-p2p/torrent_swapper||2011-04-12|Has expired: development has ceased (last release is of 2006) net-p2p/torrentvolve||2011-04-12|Has expired: development has ceased, and last release is beta sysutils/gag||2011-04-12|Has expired: no point in having it as a port, can be downloaded from the website and burned lang/gpc|lang/fpc|2011-04-12|Has expired: development has ceased; use lang/fpc instead security/mypasswordsafe|security/gorilla|2011-04-12|Has expired: development has ceased; try security/gorilla instead databases/db2||2011-04-12|Deprecated; use newer databases/db5* instead sysutils/rsyslog5-devel|sysutils/rsyslog5|2011-04-14|5.8.0 is the -stable for 5.7.x, and 5.6.x is now deprecated sysutils/rsyslog5-devel-dbi|sysutils/rsyslog5-dbi|2011-04-14|5.8.0 is the -stable for 5.7.x, and 5.6.x is now deprecated sysutils/rsyslog5-devel-gnutls|sysutils/rsyslog5-gnutls|2011-04-14|5.8.0 is the -stable for 5.7.x, and 5.6.x is now deprecated sysutils/rsyslog5-devel-gssapi|sysutils/rsyslog5-gssapi|2011-04-14|5.8.0 is the -stable for 5.7.x, and 5.6.x is now deprecated sysutils/rsyslog5-devel-mysql|sysutils/rsyslog5-mysql|2011-04-14|5.8.0 is the -stable for 5.7.x, and 5.6.x is now deprecated sysutils/rsyslog5-devel-pgsql|sysutils/rsyslog5-pgsql|2011-04-14|5.8.0 is the -stable for 5.7.x, and 5.6.x is now deprecated sysutils/rsyslog5-devel-relp|sysutils/rsyslog5-relp|2011-04-14|5.8.0 is the -stable for 5.7.x, and 5.6.x is now deprecated sysutils/rsyslog5-devel-rfc3195|sysutils/rsyslog5-rfc3195|2011-04-14|5.8.0 is the -stable for 5.7.x, and 5.6.x is now deprecated sysutils/rsyslog5-devel-snmp|sysutils/rsyslog5-snmp|2011-04-14|5.8.0 is the -stable for 5.7.x, and 5.6.x is now deprecated net-im/pickwick|net-im/chattahoochie|2011-04-15|Project renamed cad/tclspice||2011-04-18|Has expired: has been broken for more than a year comms/hcfmdm||2011-04-18|Has expired: does not compile on 7.X or higher databases/mysqlcc||2011-04-18|Has expired: has been broken for almost a year devel/ruby-rjudy||2011-04-18|Has expired: does not compile on FreeBSD 7.x or newer devel/xfc||2011-04-18|Has expired: does not compile on FreeBSD 7.x or newer devel/lamson||2011-04-18|Has expired: has been broken for a half year devel/cocktail||2011-04-18|Has expired: does not build on FreeBSD 7.x or newer devel/djgpp-gcc||2011-04-18|Has expired: has been broken for half a year devel/gauche-sdl||2011-04-18|Has expired: has been broken for a year devel/gdb53-act||2011-04-18|Has expired: does not compile on FreeBSD 7.x and up editors/zed||2011-04-18|Has expired: does not compile on FreeBSD 7.x or newer games/aqbubble||2011-04-18|Has expired: does not compile on FreeBSD 7.x or newer graphics/libvisual-plugins||2011-04-18|Has expired: has been broken for 3 years japanese/roundcube||2011-04-18|Has expired: has been broken for almost a year japanese/tkstep80||2011-04-18|Has expired: does not compile on FreeBSD 7.x or newer lang/u++||2011-04-18|Has expired: has been broken for over a half year lang/pugs||2011-04-18|Has expired: has been broken for over a year lang/mozart||2011-04-18|Has expired: does not compile on FreeBSD 7.x or newer math/linalg||2011-04-18|Has expired: does not build on FreeBSD 7.x or newer misc/ftree||2011-04-18|Has expired: has been broken for over a half year multimedia/katchtv||2011-04-18|Has expired: has been broken for a half year multimedia/libomxil-bellagio||2011-04-18|Has expired: has been broken for almost a year multimedia/banshee-mirage||2011-04-18|Has expired: has been broken for over a half year net-p2p/trackerbt||2011-04-18|Has expired: has been broken for a half year net/cap||2011-04-18|Has expired: does not compile on FreeBSD 7.x or newer net/ggsd||2011-04-18|Has expired: does not compile on FreeBSD 7.x or newer net/b2bua||2011-04-18|Has expired: does not compile on FreeBSD 7.x or newer net/penguintv||2011-04-18|Has expired: has been broken for a half year news/openftd||2011-04-18|Has expired: has been broken for almost a year palm/romeo||2011-04-18|Has expired: does not compile on FreeBSD 7.x or newer science/pcp||2011-04-18|Has expired: does not compile on FreeBSD 7.x or newer science/elmer-fem||2011-04-18|Has expired: has been broken for over a year security/newpki-lib||2011-04-18|Has expired: does not compile on FreeBSD 7.x or newer security/newpki-server||2011-04-18|Has expired: does not compile on FreeBSD 7.x or newer security/xmlsec||2011-04-18|Has expired: does not compile on FreeBSD 7.x or newer security/f-protd||2011-04-18|Has expired: has been broken for over a year sysutils/xwlans||2011-04-18|Has expired: does not compile on FreeBSD 7.x or newer www/bk_edit||2011-04-18|Has expired: does not compile on FreeBSD 7.x and newer www/bricolage||2011-04-18|Has expired: has been broken for a half year x11-toolkits/gauche-gtk||2011-04-18|Has expired: has been broken for a year x11-toolkits/php-gtk2||2011-04-18|Has expired: has been broken for over a half year x11-toolkits/p5-Tcl-Tk||2011-04-18|Has expired: has been broken for 2 year security/newpki-client||2011-04-18|Removed lang/gnustep-objc|lang/gnustep-libobjc|2011-04-19|Replaced with libobjc graphics/netpbm-devel|graphics/netpbm|2011-04-22|Updated to default ports-mgmt/portmk||2011-04-29|Has expired: has not been kept up to date for > 6 months ports-mgmt/portsman||2011-04-29|Has expired: hardwires an ancient version of INDEX mail/kiltdown||2011-04-29|Has expired: upstream seems dead since 2001 devel/pinstall||2011-04-30|Removed x11-wm/kappdock||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-wm/wmg||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-toolkits/gtkglarea--||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-toolkits/php-gtk||2011-05-01|Has expired: Abandoned upstream x11-toolkits/py-gtkextra||2011-05-01|Has expired: Abandoned upstream x11-toolkits/viewkit||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-themes/buffy||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-themes/clean-theme-gtk||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-themes/colorstep||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-themes/engradient||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-themes/flux-art||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-themes/gtk-Mac2-theme||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-themes/gtk-flat-theme||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-themes/gtkbe||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-themes/gtkstep||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-themes/gtkstep-pastel||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-themes/icegradient||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-themes/notif2||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-themes/whistlerk||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-themes/xenophilia||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-themes/xenostep||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-fm/cfm||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-fm/gnome-commander||2011-05-01|Has expired: Gnome1 is deprecated, consider using gnome-commander2 x11-fm/jaffm||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-fm/workplace||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-clocks/bdesktopclock||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-clocks/washerdryer||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-clocks/wmtz||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11-clocks/xmms-alarm||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11/buttonbox||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11/cnslock||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11/gnome-launch-box||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11/gtk-themepreview||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11/gxset||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11/portoseguro||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11/wmfstatus||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11/wmoldmenu2new||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11/xbindkeys_config||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11/xmold||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available x11/xtattr||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available www/indexme||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available www/osb-browser||2011-05-01|Has expired: Abandonware, please use www/webkit-gtk2 www/osb-nrcit||2011-05-01|Has expired: Abandonware, please use www/webkit-gtk2 www/osb-nrcore||2011-05-01|Has expired: Abandonware, please use www/webkit-gtk2 www/pumperweb||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available www/py-ez_web||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available www/py-pullparser||2011-05-01|Has expired: Obsolete and deprecated www/sidplug||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available www/twhttpd||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available www/wnews||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available www/xpath2rss||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available japanese/iiimf-le-freewnn||2011-05-01|Removed, depends on expired library japanese/iiimf-le-canna||2011-05-01|Removed, depends on expired library chinese/iiimf-le-newpy||2011-05-01|Removed, depends on expired library korean/iiimf-le-hangul||2011-05-01|Removed, depends on expired library chinese/iiimf-le-ude||2011-05-01|Removed, depends on expired library textproc/ctpp|textproc/ctpp2|2011-05-01|Has expired: Deprecated; please use textproc/ctpp2 textproc/dsssl-docbook-cygnus||2011-05-01|Has expired: Distfile is no longer available textproc/fdp-tools||2011-05-01|Has expired: Distfile is no longer available textproc/iiimf-client-lib||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available textproc/iiimf-csconv||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available textproc/iiimf-headers||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available textproc/iiimf-le-unit||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available textproc/iiimf-protocol-lib||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available textproc/iiimf-server||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available textproc/iiimf-x||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available textproc/iiimf-x-lib||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available textproc/maketeidtd||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available textproc/minidom||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available textproc/ocaml-yaxpo||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available textproc/p5-LJ-SpellCheck||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available textproc/py-HyperText||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available textproc/smartdoc||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available textproc/xmlpp||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/acidlaunch||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/cpbk||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/dc42wrap||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/deleted||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/dolly+||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/durep||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/dvdtape||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/fontedit||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/ftrace||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/gfslicer||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/ghasher||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/gkrellmouse||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/gkrellmwho||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/glload||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/gnomefind||2011-05-01|Has expired: Abandoned upstream sysutils/graft||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/growspd||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/gtoaster||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/idled||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available, consider using sysutils/doinkd sysutils/maint||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/ndir||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/p5-LJ-Cache||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/p5-LJ-TextMessage||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/reclinker||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/rotate||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/ticker.app||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/upsmon||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/usbutil||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/uwatch||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/wmavgload||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/wmfsm||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/wmhm||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/wminet||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/wmlmmon||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/wmlongrun||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/wmmemmon||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/wmmount||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/wmpccard||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/wmshutdown||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available sysutils/wmzazof||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/aafid2||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/bjorb||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/borzoi||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/find_ddos||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/ftpmap||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/hafiye||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/ident2||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/liedentd||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/pam_pop3||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/poc||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/portscanner||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/ppgen||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/qident||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/quintuple-agent||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/rc5pipe||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/rid||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/ssh||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/tea-total||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available security/uberkey||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/bjfilter360||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/bjfilter850||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/bjfilter850ug||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/bjfilter860||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/bjfilter870||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/bjfiltercom||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/bjfilters600||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/bjfilters630||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/bjfilters6300||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/bsd_lpr||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/dvi2xx||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/envelope||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/pclprint||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/psmark||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/tipograf||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/tr2latex||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available print/wmlpq||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available palm/jfconv||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available palm/palmpower||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available palm/sitescooper||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available palm/uppc-kmod||2011-05-01|Has expired: Upstream disappeared and distfile is no longer available news/leafnode+||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available news/pyne||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available news/slurp||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available news/unpost||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net-p2p/edonkey-gui-gtk||2011-05-02|Removed, depends on linux-edonkey-core which has expired net-p2p/edonkey-gui-gtk-urlslave||2011-05-02|Removed, depends on linux-edonkey-core which has expired net-p2p/fcptools||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net-p2p/hx||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net-p2p/linux-edonkey-core||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net-p2p/linux-edonkey-server||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net-p2p/linux-edonkey-tool-recovermet||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net-mgmt/junipoll||2011-05-02|Removed, depends on expired net-mgmt/p5-Altoids net-mgmt/annextools||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net-mgmt/asused||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net-mgmt/ipsectrace||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net-mgmt/knowlan||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net-mgmt/p5-Altoids||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net-mgmt/scotty3||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net-im/aim||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net-im/jit||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net-im/kf||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/bbsnet||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/bing||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/brutecopy||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/crescendo||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/danamics||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/etunnel||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/gastman||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/generic-nqs||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/gkrellmmultiping2||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/gkrellmwireless||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/gnoemoe||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/gnosamba||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/merlinmon||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/msntp||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/ntalk||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/onion-fec||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/openverse||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/poink||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/roadrunner||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/sambasentinel||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/scand||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/tacshell||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/telserv||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/tvark||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/warppipe||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/wistumbler2||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/wmq3||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/xbone-gui||2011-05-02|Has expired: will be unsupported by ASF when 2.4.0 is release, migrate to 2.2.x+ now net/xsmbrowser||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/xtraceroute||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/ytalk||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available net/zniper||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available multimedia/gtksubtitler||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available multimedia/hayes||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available multimedia/netshow||2011-05-02|Has expired: Distfile is no longer available multimedia/smpeg-xmms||2011-05-02|Has expired: Distfile is no longer available multimedia/streamdvd||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available multimedia/sublib||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available multimedia/tkxanim||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available multimedia/tosvcd||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available multimedia/tv_grab_au||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available multimedia/xdvshow||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available multimedia/xmms-avi||2011-05-02|Has expired: Distfile is no longer available multimedia/xmps||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available multimedia/xvid4conf||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/acron||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/chord||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/datedif||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/earthview||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/fcalc||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/gkrellscore||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/goldstr||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/gtl||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/kp||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/nserver||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/patanjali||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/qmc||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/snowflake||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/translator||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/videotext||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available misc/wmweather||2011-05-02|Has expired: Distfile is no longer available, try misc/wmweather+ misc/wmx10||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available math/fudgit||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available math/kaskade||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available math/qscanplot||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available math/rpc||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available math/ss||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available math/wmcalc||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/crashecho||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/drbl||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/glbiff||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/libsrs||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/majorcool||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/messagewall||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/pgen||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/regm||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/ricochet||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/smtpclient||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/smtpproxy||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/solidpop3d||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/spruce||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/teapop-devel||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/wmmail||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/wmmultipop3||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available mail/wmymail||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available java/avalon-logkit||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available java/gnu-regexp||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available java/jce-aba||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available java/jsdk||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available irc/garnaxfs||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available irc/party||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/cqcam||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/dc3play||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/dore||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/fig2pstricks||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/geist||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/gfont||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/gimp-greycstoration||2011-05-02|Has expired: Superseded by graphics/gimp-gmic-plugin graphics/glean||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/gltk||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/gridpix||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/gtkfig||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/gview||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/icod||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/isreal||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/oglext||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/ophoto||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/py-gdchart||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/py-gdchart2||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/qglviewer||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/robot||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/s3switch||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/sced||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/shim||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/snx101util||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/tcm||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/vertex||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/vvv||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/xdl||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/xmms-goom||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available graphics/xmms-infinity||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available ftp/axyftp||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available ftp/emacs-wget||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available ftp/moftpd||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available ftp/wu-ftpd||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available ftp/xrmftp||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available ftp/yale-tftpd||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available emulators/basiliskII||2011-05-02|Has expired: Distfile is no longer available; official website has older distfiles emulators/tkhfs||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available emulators/twin||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available emulators/vgb||2011-05-02|Has expired: Distfile is no longer available (latest binaries provided by upstream are for 5.x) emulators/vpce||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available chinese/nvi-big5||2011-05-02|Has expired: Distfile is no longer available chinese/nvi-euc-cn||2011-05-02|Has expired: Distfile is no longer available chinese/nvi-euc-tw||2011-05-02|Has expired: Distfile is no longer available editors/nvi-perl||2011-05-02|Has expired: Distfile is no longer available japanese/nvi-euc-jp||2011-05-02|Has expired: Distfile is no longer available japanese/nvi-iso-2022-jp||2011-05-02|Has expired: Distfile is no longer available japanese/nvi-sjis||2011-05-02|Has expired: Distfile is no longer available korean/nvi-euc-kr||2011-05-02|Has expired: Distfile is no longer available korean/nvi-iso-2022-kr||2011-05-02|Has expired: Distfile is no longer available editors/MathPlanner||2011-05-02|Has expired: Upstream says project is canceled and no more distfiles can be found editors/bitmap||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available editors/bitmap-emacs21||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available editors/cle||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available editors/dedit||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available editors/em||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available editors/leim21||2011-05-02|Has expired: Distfile is no longer available editors/lpe||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available editors/vilearn||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available editors/xenon||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/a2dev||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/c2lib||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/c2man||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/c_parser||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/cdoc||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/diffconvert||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/error||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/excalibur-configuration||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/freelibiberty||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/gengameng||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/hptools||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/invitation_to_ruby||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/kimwitu++||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/libU77||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/libcoro||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/libpperl||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/lincvs||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/linux-runrev||2011-05-02|Has expired: Abandoned upstream and distfile is no longer available devel/makeplus||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/maketool||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/mob||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/mprof||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/ngpt||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/pedisassem||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/rinfo||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/templ||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available devel/towitoko||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available x11-fonts/avifonts||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available x11-fonts/bitmap-fonts||2011-05-02|Has expired: Distfile is no longer available x11-fonts/mozilla-fonts||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available x11-fonts/xfed||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available x11-fonts/xmbdfed||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available audio/dap||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available audio/gdrdao||2011-05-02|Has expired: Upstream disappeared and no more distfiles available databases/gmysql||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available deskutils/kuake||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available finance/xinvest||2011-05-02|Has expired: Outdated, abandoned finance/xquote||2011-05-02|Has expired: Outdated, abandoned french/plgrenouille||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available editors/xemacs-devel-mule-xft||2011-05-02|Remove, editors/xemacs-devel-mule builds with xft support now lang/clips||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available lang/eiffel||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available lang/libutils||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available lang/linux-libperl5.8||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available lang/osb-jscore||2011-05-02|Has expired: Abandonware, please use www/webkit-gtk2 devel/kxl||2011-05-02|Has expired: Upstream disappeared and distfile is no longer available games/geki2||2011-05-02|Removed, Upstream disappeared and distfile is no longer available games/geki3||2011-05-02|Removed, Upstream disappeared and distfile is no longer available games/grande||2011-05-02|Removed, Upstream disappeared and distfile is no longer available games/spacearyarya||2011-05-02|Removed, Upstream disappeared and distfile is no longer available ftp/ftptool||2011-05-02|Removed, depend on this expired editors/textedit security/libfwbuilder||2011-05-02|libfwbuilder merged into fwbuilder games/monopd||2011-05-03|Removed, depends on an expired library: devel/libcapsinetwork devel/libcapsinetwork||2011-05-03|Has expired: Upstream disappeared and distfile is no longer available audio/albumart||2011-05-03|Has expired: Upstream disappeared and distfile is no longer available audio/cantus||2011-05-03|Has expired: Upstream disappeared and distfile is no longer available science/oases||2011-05-03|Has expired: Upstream disappeared and distfile is no longer available shells/pash||2011-05-03|Has expired: Upstream disappeared and distfile is no longer available www/codeigniter-devel||2011-05-03|Removed devel/common_msgs|devel/ros-common_msgs|2011-05-03|Renamed math/geometry|math/ros-geometry|2011-05-03|Renamed devel/hs-FileManip|devel/hs-filemanip|2011-05-08|Renamed: Cabal package has been renamed devel/lhs2TeX|textproc/hs-lhs2tex|2011-05-08|Renamed: It has become a Cabal transcript devel/bnfc|devel/hs-BNFC|2011-05-08|Renamed: It has become a Cabal transcript graphics/hs-hgl|graphics/hs-HGL|2011-05-08|Deleted: overridden by graphics/hs-HGL net/hs-network-bytestring||2011-05-08|Removed: It is deprecated by net/hs-network devel/hs-uvector||2011-05-08|Removed: It is deprecated by devel/hs-vector devel/hs-uvector-algorithms||2011-05-08|Removed: It is deprecated by devel/hs-vector-algorithms devel/jude-community|devel/astah-community|2011-05-09|Project was renamed net/skype12|net-im/skype12|2011-05-09|Moved to a better category net/skype|net-im/skype|2011-05-09|Moved to a better category net/skype-devel|net-im/skype-devel|2011-05-12|Moved to a better category devel/libchipcard-kde||2011-05-14|Obsolete sysutils/libgksuui|sysutils/libgksu|2011-05-14|Removed: It is a part of sysutils/libgksu now security/barnyard-sguil|security/barnyard2-sguil|2011-05-15|barnyard2 has build in sguil support multimedia/rebot3||2011-05-16|Removed devel/tcl-neo||2011-05-22|Removed: deprecated and no maintainer interest www/neowebscript||2011-05-22|Removed: deprecated and no maintainer interest databases/db3||2011-05-23|Removed: all users set USE_BDB=3+ and have been using 4.0+ databases/db45|databases/db46|2011-05-28|Removed: no users left that require exactly 4.5 textproc/scim-kmfl-european-latin|textproc/kmfl-european-latin|2011-05-29|KMFL keyboard ports are now platform-independent textproc/scim-kmfl-sil-ezra|textproc/kmfl-sil-ezra|2011-05-29|KMFL keyboard ports are now platform-independent textproc/scim-kmfl-sil-galatia|textproc/kmfl-sil-galatia|2011-05-29|KMFL keyboard ports are now platform-independent textproc/scim-kmfl-sil-ipa-unicode5|textproc/kmfl-sil-ipa-unicode|2011-05-29|KMFL keyboard ports are now platform-independent textproc/scim-kmfl-sil-panafrican-latin|textproc/kmfl-sil-panafrican-latin|2011-05-29|KMFL keyboard ports are now platform-independent textproc/scim-kmfl-sil-yi|textproc/kmfl-sil-yi|2011-05-29|KMFL keyboard ports are now platform-independent textproc/scim-kmfl-varamozhi-malayalam|textproc/kmfl-varamozhi-malayalam|2011-05-29|KMFL keyboard ports are now platform-independent dns/bind94||2011-05-31|EOL - Update to dns/bind97 or dns/bind96 dns/bind94-geoip||2011-05-31|BIND 9.4.x is EOL german/citrix_xenapp||2011-06-01|Has expired: crashes with Fedora 10 Linux base japanese/citrix_xenapp||2011-06-01|Has expired: crashes with Fedora 10 Linux base net/citrix_xenapp||2011-06-01|Has expired: crashes with Fedora 10 Linux base comms/gammu-python||2011-06-01|Has expired: since version 1.29.0 comms/gammu uses Python by default java/gj||2011-06-01|Has expired: Upstream disappeared and distfile is no longer available net/ipv6socket_scrub||2011-06-01|Has expired: Upstream disappeared and distfile is no longer available graphics/lodju||2011-06-01|Has expired: depends on rep-gtk, which doesn't build anymore www/mod_pubcookie||2011-06-01|Has expired: will be unsupported by ASF when 2.4.0 is release, migrate to 2.2.x+ now ftp/prozilla||2011-06-01|Has expired: Upstream disappeared and distfile is no longer available www/py-django11||2011-06-01|Has expired: Unsupported (no longer receive security updates or bugfixes) x11-toolkits/rep-gtk||2011-06-01|Has expired: missing rep-config from librep port broke the build games/tnl||2011-06-01|Has expired: Upstream development has ceased, it doesn't work with newer CEGUI and is generally broken net/vnc2swf|deskutils/vnc2flv|2011-06-01|Has expired: Development is now superseded by deskutils/vnc2flv mail/postfix24||2011-06-03|Has expired: no further upstream development; please consider upgrading www/mod_roaming2||2011-06-04|Has expired: no supported browser and no further upstream development; see PR 73383 net-p2p/qbittorrent26|net-p2p/qbittorrent|2011-06-05|Old version no longer updated. Try net-p2p/qbittorrent net-p2p/qbittorrent26-nox11|net-p2p/qbittorrent-nox11|2011-06-05|Old version no longer updated. Try net-p2p/qbittorrent net-p2p/qbittorrent27|net-p2p/qbittorrent|2011-06-05|Old version no longer updated. Try net-p2p/qbittorrent net-p2p/qbittorrent27-nox11|net-p2p/qbittorrent-nox11|2011-06-05|Old version no longer updated. Try net-p2p/qbittorrent www/pubcookie-login-server||2011-06-06|Has expired: Unused by maintainer, needs updates databases/mariadb||2011-06-06|Split into databases/mariadb-{client,scripts,server} devel/bugzilla2||2011-06-07|Removed: no longer under development lang/ruby-js||2011-06-09|Removed: depends on expired port, seems abandonware itself textproc/ruby-xml-script||2011-06-09|Removed: depends on expired port, seems abandonware itself www/ruby-asp||2011-06-09|Removed: depends on expired port, seems abandonware itself lang/njs||2011-06-09|Has expired: Upstream disappeared and distfile is no longer available editors/wily||2011-06-09|Removed, depends on an expired port x11-fonts/Xg||2011-06-09|Has expired: Upstream disappeared and distfile is no longer available irc/bitlbee-otr||2011-06-13|Removed, overridden by irc/bitlbee deskutils/mcatalog||2011-06-13|Has expired: Upstream disappeared and distfile is no longer available mail/evolution-sharp||2011-06-13|Has expired: has been broken for over a year print/cmpsfont|print/font-amsfonts|2011-06-15|Renamed print/amspsfnt|print/font-amsfonts|2011-06-15|Renamed irc/ezbounce-devel|irc/ezbounce|2011-06-19|Main port updated to the latest available version graphics/povray|graphics/povray36|2011-06-21|Renamed x11/widgetfactory|x11-themes/thewidgetfactory|2011-06-23|Duplicate ports merged deskutils/opengoo|deskutils/fengoffice|2011-06-24|It was renamed to deskutils/fengoffice irc/gdesklets-irc||2011-06-25|Has expired: Upstream disappeared and distfile is no longer available net/libevnet||2011-06-25|Has expired: no longer necessary now that libevent2 has been released www/mod_auth_ldap||2011-06-25|Has expired: apache 13/20 is scheduled for deletion, migrate to 2.2.x+ and mod_authnz_ldap now www/mod_auth_remote||2011-06-25|Has expired: will be unsupported by ASF when 2.4.0 is release, migrate to 2.2.x+ now www/mod_authenticache||2011-06-25|Has expired: will be unsupported by ASF when 2.4.0 is release, migrate to 2.2.x+ now www/mod_layout2||2011-06-25|Has expired: will be unsupported by ASF when 2.4.0 is release, migrate to 2.2.x+ now www/mod_macro2||2011-06-25|Has expired: will be unsupported by ASF when 2.4.0 is release, migrate to 2.2.x+ now www/mod_traf_thief||2011-06-25|Has expired: will be unsupported by ASF when 2.4.0 is release, migrate to 2.2.x+ now www/mod_transform||2011-06-25|Has expired: will be unsupported by ASF when 2.4.0 is release, migrate to 2.2.x+ now comms/ruby-termios|comms/rubygem-ruby-termios|2011-06-25|Development has moved, <=0.9.5 doesn't work with Ruby 1.9.x java/jdk14||2011-06-28|Has expired: does not build on FreeBSD 7.x or newer mail/vpopmail-devel|mail/vpopmail|2011-06-28|Has expired: Obsolete version, install mail/vpopmail port audio/rat||2011-07-01|The mbone is no more audio/rat30||2011-07-01|The mbone is no more audio/speak_freely||2011-07-01|The mbone is no more audio/vat||2011-07-01|The mbone is no more audio/xspeakfree||2011-07-01|The mbone is no more net/imm||2011-07-01|The mbone is no more net/mcl||2011-07-01|The mbone is no more net/rqm||2011-07-01|The mbone is no more net/sdr||2011-07-01|The mbone is no more net/udpcast||2011-07-01|The mbone is no more net/wb||2011-07-01|The mbone is no more math/femlab||2011-07-02|Has expired: No more distfiles, looks like abandonware japanese/wikicker||2011-07-02|Has expired: Looks like abandonware emulators/vmware3||2011-07-02|Has expired: No more distfiles available; emulators/virtualbox-ose can be used as a replacement devel/libevocosm||2011-07-02|Has expired: Looks like abandonware devel/acovea||2011-07-02|Has expired: Looks like abandonware devel/acovea-gtk||2011-07-02|Has expired: Looks like abandonware sysutils/service-config||2011-07-02|Has expired: mastersite disappeared print/lyx-devel||2011-07-03|print/lyx has been updated to a newer version, use it instead archivers/lzo||2011-07-07|Use archivers/lzo2 instead www/horde4-browser||2011-07-07|Removed www/horde4-template||2011-07-07|Removed deskutils/horde4-itip||2011-07-07|Removed deskutils/horde4-alarm||2011-07-07|Removed devel/horde4-rdo||2011-07-07|Removed devel/horde4-date||2011-07-07|Removed devel/horde4-autoloader||2011-07-07|Removed devel/horde4-cache||2011-07-07|Removed devel/horde4-dateparser||2011-07-07|Removed devel/horde4-translation||2011-07-07|Removed devel/horde4-streamfilter||2011-07-07|Removed devel/horde4-constraint||2011-07-07|Removed devel/horde4-streamwrapper||2011-07-07|Removed graphics/horde4-image||2011-07-07|Removed security/horde4-auth||2011-07-07|Removed x11-wm/boxtools|x11-wm/blackbox|2011-07-08|Ports merged together audio/ruby-ogginfo||2011-07-09|Replaced with audio/rubygem-ogginfo audio/ruby-shout||2011-07-10|Replaced with audio/rubygem-shout textproc/xpp3||2011-07-11|Removed depends on an expired ports textproc/xmlpull||2011-07-11|Has expired: Upstream disappeared and distfile is no longer available java/shujit||2011-07-13|Has expired: ancient version of Java net-im/skype12||2011-07-13|Has expired: very old version net-p2p/tvrss||2011-07-14|tvrss site does not exist anymore www/horde4-meta||2011-07-14|Removed graphics/crystalentitylayer||2011-07-17|Removed graphics/crystalspace||2011-07-17|Has expired: has been broken for a year mail/qmail-vida||2011-07-18|Has expired: UID collisions, IGNOREd for four years with no one caring java/jdk13|java/jdk15|2011-07-21|Has expired: ancient version of Java java/linux-sun-jdk13|java/linux-sun-jdk15|2011-07-21|Has expired: ancient version of Java java/jboss3||2011-07-21|Has expired: Depends on expired Java 1.4 textproc/galax||2011-07-21|Has expired: Depends on expired Java 1.4 devel/colorer||2011-07-21|Has expired: Depends on deprecated Java 1.4 security/jce_policy14||2011-07-21|Has expired: Only for Java 1.4, which is deprecated java/linux-blackdown-jdk14||2011-07-21|Has expired: ancient version of Java java/linux-sun-jdk14|java/linux-sun-jdk15|2011-07-21|Has expired: ancient version of Java dns/dhid||2011-07-28|Has expired: Unmaintained, distfile has changed with no explanation math/librandlib|math/randlib|2011-07-28|Move to a location that matches the name science/bblimage|science/pyvox|2011-07-28|Track the upstream name change net-im/gnome-jabber|net-im/empathy|2011-07-28|Has expired: No longer maintained upstream since 2005; use net-im/empathy instead devel/gir-repository||2011-07-30|Removed devel/gir-repository-libnotify||2011-07-30|Removed graphics/gir-repository-goocanvas||2011-07-30|Removed graphics/gir-repository-poppler||2011-07-30|Removed x11-toolkits/gir-repository-vte||2011-07-30|Removed mail/rubygem-smtp_tls||2011-07-30|Has expired: no supported version of FreeBSD have < 1.8.7.p72 textproc/pl-hunspell|polish/hunspell|2011-07-31|Move to a better place via repocopy www/mod_roaming||2011-08-01|Has expired: no supported browser and no further upstream development; see PR 73383 archivers/zipios++||2011-08-01|Has expired: No more public distfiles astro/sattrack||2011-08-01|Has expired: No more public distfiles audio/bladeenc||2011-08-01|Has expired: Looks like abandonware audio/cdplayer.app||2011-08-01|Has expired: Looks like abandonware, no more public distfiles audio/linux-vsound||2011-08-01|Has expired: Abandonware audio/mpegaudio||2011-08-01|Has expired: No more public distfiles audio/mpmf20||2011-08-01|Has expired: Abandonware audio/mutemix||2011-08-01|Has expired: abandonware, no more public distfiles audio/phatbeat||2011-08-01|Has expired: abandonware, no more public distfiles audio/pimp3||2011-08-01|Has expired: No more public distfiles audio/rbscrobbler||2011-08-01|Has expired: Looks like abandonware, no more public distfiles audio/ripenc||2011-08-01|Has expired: Looks like abandonware, no more public distfiles audio/wmcdplay||2011-08-01|Has expired: Looks like abandonware, no more public distfiles audio/wmfmixer||2011-08-01|Has expired: Looks like abandonware, no more public distfiles audio/wmmp3||2011-08-01|Has expired: Looks like abandonware, no more public distfiles audio/wmusic||2011-08-01|Has expired: Looks like abandonware, no more public distfiles audio/xmms-kj||2011-08-01|Has expired: Looks like abandonware, no more public distfiles audio/xmms-pipe||2011-08-01|Has expired: Looks like abandonware, no more public distfiles audio/xmms-speex||2011-08-01|Has expired: Looks like abandonware, no more public distfiles audio/xsidplay||2011-08-01|Has expired: Looks like abandonware, no more public distfiles audio/xtuner||2011-08-01|Has expired: Looks like abandonware, no more public distfiles benchmarks/rawio||2011-08-01|Has expired: Looks like abandonware, no more public distfiles benchmarks/tmetric||2011-08-01|Has expired: Looks like abandonware, no more public distfiles biology/L-Breeder||2011-08-01|Has expired: Looks like abandonware, no more public distfiles biology/crimap||2011-08-01|Has expired: Looks like abandonware, no more public distfiles biology/distribfold||2011-08-01|Has expired: No more upstream, looks like abandonware biology/kinemage||2011-08-01|Has expired: Looks like abandonware, no more public distfiles biology/lsysexp||2011-08-01|Has expired: Looks like abandonware, no more public distfiles chinese/chm2html||2011-08-01|Has expired: Looks like abandonware, no more public distfiles chinese/ntuttf||2011-08-01|Has expired: No more public distfiles available chinese/tocps||2011-08-01|Has expired: No more public distfiles available chinese/xttmgr||2011-08-01|Has expired: Looks like abandonware, no more public distfiles comms/mserver||2011-08-01|Has expired: Looks like abandonware, no more public distfiles comms/qicosi||2011-08-01|Has expired: Looks like abandonware, no more public distfiles comms/smstools||2011-08-01|Has expired: Looks like abandonware, no more public distfiles converters/siconv||2011-08-01|Has expired: Looks like abandonware, no more public distfiles converters/utf8conv||2011-08-01|Has expired: Looks like abandonware, no more public distfiles databases/pgcluster||2011-08-01|Has expired: Looks like abandonware, no more public distfiles databases/py-MySQL||2011-08-01|Has expired: Please use databases/py-MySQLdb instead databases/py-SQLDict||2011-08-01|Has expired: Looks like abandonware, no more public distfiles databases/py-rrdpipe||2011-08-01|Has expired: Looks like abandonware, no more public distfiles databases/sybase_ase||2011-08-01|Has expired: no more public distfiles available deskutils/gkrellm-timers||2011-08-01|Has expired: No more public distfile deskutils/multi-backgrounds-daemon||2011-08-01|Has expired: Looks like abandonware, no more public distfiles deskutils/py-tagfu||2011-08-01|Has expired: Looks like abandonware, no more public distfiles deskutils/taskstep||2011-08-01|Has expired: Looks like abandonware, no more public distfiles devel/c_c++_reference||2011-08-01|Has expired: No more public distfiles devel/libcoyotl||2011-08-01|Has expired: Looks like abandonware, no more public distfiles devel/libfs++||2011-08-01|Has expired: Looks like abandonware, no more public distfiles devel/mkmf||2011-08-01|Has expired: Looks like abandonware, no more public distfiles devel/p5-Include||2011-08-01|Has expired: No more public distfiles devel/rubygem-newgem||2011-08-01|Has expired: broken since 2010/09/22 devel/tpg||2011-08-01|Has expired: Looks like abandonware, no more public distfiles games/amphetamine||2011-08-01|Has expired: Looks like abandonware, no more public distfiles games/anagramarama||2011-08-01|Has expired: Looks like abandonware, no more public distfiles games/connect4||2011-08-01|Has expired games/wrogue||2011-08-01|Has expired: Looks like abandonware, no more public distfiles graphics/xmms-msa||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/chimera||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/drpl||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/easypr||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/elisp-manual||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/emacs-manual||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/ewipe||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/ircII||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/jhd||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/libjconv||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/mimekit||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/nethack32||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/paledit||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/recjis||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/typist||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/weblint97||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/xmsgsaver||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/xshodo||2011-08-01|Has expired: Looks like abandonware, no more public distfiles japanese/xvi-euc||2011-08-01|Has expired: No more public distfiles japanese/xvi-sjis||2011-08-01|Has expired: No more public distfiles japanese/xyagamo||2011-08-01|Has expired: Looks like abandonware, no more public distfiles korean/a2ps||2011-08-01|Has expired: Looks like abandonware, no more public distfiles korean/bitchx||2011-08-01|Has expired: Looks like abandonware, no more public distfiles korean/elm||2011-08-01|Has expired: Looks like abandonware, no more public distfiles korean/linuxdoc-sgml||2011-08-01|Has expired: Looks like abandonware, no more public distfiles korean/mod_url||2011-08-01|Has expired: Looks like abandonware, no more public distfiles korean/nh2ps||2011-08-01|Has expired: Looks like abandonware, no more public distfiles korean/pinetreefonts||2011-08-01|Has expired: No more public distfile mail/cmail||2011-08-01|Has expired: No more public distfile math/qgfe||2011-08-01|Has expired: Looks like abandonware, no more public distfiles misc/ewipe||2011-08-01|Has expired: Looks like abandonware, no more public distfiles misc/gkrellmfmonitor2||2011-08-01|Has expired: Looks like abandonware, no more public distfiles misc/gkx86info||2011-08-01|Has expired: Looks like abandonware, no more public distfiles multimedia/goggles||2011-08-01|Has expired: Abandonware, see: http://www.fifthplanet.net/2010/01/dead-projects-goggles-dvd-player.html multimedia/ldvd||2011-08-01|Has expired: Abandonware multimedia/linux-divx4linux||2011-08-01|Has expired: No longer needed multimedia/linux-divx4linux4||2011-08-01|Has expired: No longer needed multimedia/ogle||2011-08-01|Has expired: Abandonware multimedia/ogle-gui||2011-08-01|Has expired: Abandonware multimedia/okle||2011-08-01|Has expired: Abandonware multimedia/subconv||2011-08-01|Has expired: Looks like abandonware, no more public distfiles net/callgen323||2011-08-01|Has expired: Looks like abandonware, no more public distfiles net/lyntin||2011-08-01|Has expired: No longer under active development net/py-rt||2011-08-01|Has expired: Looks like abandonware, no more public distfiles net/traffic||2011-08-01|Has expired: Looks like abandonware, no more public distfiles net-im/gnomeicu||2011-08-01|Has expired: No longer maintained upstream, use net-im/empathy instead net-mgmt/trafd||2011-08-01|Has expired: Looks like abandonware, no more public distfiles net-p2p/gkrellm-gift||2011-08-01|Has expired: Looks like abandonware, no more public distfiles news/bgrab||2011-08-01|Has expired: Looks like abandonware, no more public distfiles news/rkive||2011-08-01|Has expired: Looks like abandonware, no more public distfiles polish/sap||2011-08-01|Has expired: Looks like abandonware, no more public distfiles devel/eboxy||2011-08-01|Removed: depends on expired sdl_gui russian/messarge||2011-08-01|Has expired: Looks like abandonware, no more public distfiles russian/pgp.language||2011-08-01|Has expired: Looks like abandonware, no more public distfiles security/ifd-gempc410||2011-08-01|Has expired: Looks like abandonware, no more public distfiles security/libidea||2011-08-01|Has expired: Looks like abandonware, no more public distfiles security/rain||2011-08-01|Has expired: Looks like abandonware, no more public distfiles sysutils/Tee||2011-08-01|Has expired: No more public distfile sysutils/i855vidctl10||2011-08-01|Has expired: No more public distfiles sysutils/rsyslog3-snmp||2011-08-01|Has expired: unsupported upstream sysutils/xapply||2011-08-01|Has expired: No more public distfiles textproc/diff-mode.el||2011-08-01|Has expired: Looks like abandonware, no more public distfiles vietnamese/gtk-im-vi||2011-08-01|Has expired: Looks like abandonware, no more public distfiles www/campsite||2011-08-01|Has expired: Does not work www/p5-PLP||2011-08-01|Has expired: No more upstream, looks like an abandonware www/wcol||2011-08-01|Has expired: Looks like abandonware, no more public distfiles x11-toolkits/sdl_gui||2011-08-01|Has expired: Looks like abandonware, no more public distfiles www/contenido||2011-08-01|Has expired: ancient version of PHP needed audio/rio||2011-08-02|Has expired: Looks like abandonware, no more public distfiles audio/ruby-musicextras||2011-08-02|Has expired: Upcoming ruby-gnome removes dependencies deskutils/sshmenu||2011-08-02|Has expired: Upcoming ruby-gnome removes dependencies science/gave||2011-08-02|Has expired: Upcoming ruby-gnome removes dependencies x11-themes/gnome-art||2011-08-02|Has expired: Upcoming ruby-gnome removes dependencies x11-themes/gnome-splashscreen-manager||2011-08-02|Has expired: Upcoming ruby-gnome removes dependencies databases/mysql-gui-tools||2011-08-02|Removed; broken for more than 6 months www/adblock|www/xpi-adblock|2011-08-02|Depends on obsolete SeaMonkey 1.1 www/bugmenot|www/bugmenot-firefox|2011-08-02|Depends on obsolete SeaMonkey 1.1 www/mozex|www/xpi-mozex|2011-08-02|Depends on obsolete SeaMonkey 1.1 www/preferential||2011-08-02|Depends on obsolete SeaMonkey 1.1 comms/ruby-serialport||2011-08-03|Has expired: Doesn't work with Ruby 1.9 databases/ruby-search-namazu||2011-08-03|Has expired: Doesn't work with Ruby 1.9 databases/ruby-sqlite||2011-08-03|Has expired: Doesn't work with Ruby 1.9 databases/rubygem-kirbybase||2011-08-03|Has expired: Doesn't work with Ruby 1.9 devel/ruby-eet||2011-08-03|Has expired: Doesn't work with Ruby 1.9 devel/ruby-filelock||2011-08-03|Has expired: Doesn't work with Ruby 1.9 devel/ruby-filemagic||2011-08-03|Has expired: Doesn't work with Ruby 1.9 devel/ruby-metaruby||2011-08-03|Has expired: Doesn't work with Ruby 1.9 devel/ruby-poll||2011-08-03|Has expired: Doesn't work with Ruby 1.9 devel/ruby-rrb||2011-08-03|Has expired: Doesn't work with Ruby 1.9 devel/ruby-strongtyping||2011-08-03|Has expired: Doesn't work with Ruby 1.9 devel/ruby-textbuf||2011-08-03|Has expired: Doesn't work with Ruby 1.9 graphics/ruby-graph||2011-08-03|Has expired: Doesn't work with Ruby 1.9 graphics/ruby-libpng||2011-08-03|Has expired: Doesn't work with Ruby 1.9 japanese/ruby-kakasi||2011-08-03|Has expired: Doesn't work with Ruby 1.9 lang/ruby-extensions||2011-08-03|Has expired: Doesn't work with Ruby 1.9 lang/ruby-lua||2011-08-03|Has expired: Doesn't work with Ruby 1.9 lang/ruby-perl||2011-08-03|Has expired: Doesn't work with Ruby 1.9 mail/ruby-tmail||2011-08-03|Has expired: Doesn't work with Ruby 1.9 math/ruby-bitset||2011-08-03|Has expired: Doesn't work with Ruby 1.9 math/ruby-bitvector||2011-08-03|Has expired: Doesn't work with Ruby 1.9 math/ruby-gmp||2011-08-03|Has expired: Doesn't work with Ruby 1.9 net/ruby-mpi||2011-08-03|Has expired: Doesn't work with Ruby 1.9 net/ruby-nis||2011-08-03|Has expired: Doesn't work with Ruby 1.9 net/ruby-pcap||2011-08-03|Has expired: Doesn't work with Ruby 1.9 net/ruby-romp||2011-08-03|Has expired: Doesn't work with Ruby 1.9 net/ruby-spread||2011-08-03|Has expired: Doesn't work with Ruby 1.9 print/ruby-pdflib||2011-08-03|Has expired: Doesn't work with Ruby 1.9 security/ruby-aes||2011-08-03|Has expired: Doesn't work with Ruby 1.9 security/ruby-blowfish||2011-08-03|Has expired: Doesn't work with Ruby 1.9 security/ruby-cast_256||2011-08-03|Has expired: Doesn't work with Ruby 1.9 security/ruby-mcrypt||2011-08-03|Has expired: Doesn't work with Ruby 1.9 security/ruby-pam||2011-08-03|Has expired: Doesn't work with Ruby 1.9 sysutils/ruby-log4r||2011-08-03|Has expired: Doesn't work with Ruby 1.9 textproc/ruby-csv||2011-08-03|Has expired: Doesn't work with Ruby 1.9 textproc/ruby-formvalidator||2011-08-03|Has expired: Doesn't work with Ruby 1.9 textproc/ruby-gdome||2011-08-03|Has expired: Doesn't work with Ruby 1.9 textproc/ruby-htmltools||2011-08-03|Has expired: Doesn't work with Ruby 1.9 textproc/ruby-nqxml||2011-08-03|Has expired: Doesn't work with Ruby 1.9 textproc/ruby-quixml||2011-08-03|Has expired: Doesn't work with Ruby 1.9 textproc/ruby-raspell||2011-08-03|Has expired: Doesn't work with Ruby 1.9 textproc/ruby-tempura||2011-08-03|Has expired: Doesn't work with Ruby 1.9 textproc/ruby-xtemplate||2011-08-03|Has expired: Doesn't work with Ruby 1.9 www/ruby-tmpl||2011-08-03|Has expired: Doesn't work with Ruby 1.9 x11/gcursor||2011-08-03|No longer maintained upstream www/firefox35||2011-08-03|Has expired: Upstream support dropped. Please consider using www/firefox instead www/firefox35-i18n||2011-08-03|Has expired: Upstream support dropped. Please consider using www/firefox-i18n instead graphics/leptonlib|graphics/leptonica|2011-08-05|Follow upstream name change lang/gnustep-libobjc|lang/libobjc2|2011-08-06|Replaced with libobjc2 sysutils/p5-mogilefs-server|sysutils/p5-MogileFS-Server|2011-08-08|Move to a better place via repocopy devel/fossology||2011-08-09|Has expired: Broken for four months with no one caring deskutils/alexandria||2011-08-10|Has expired: Upcoming ruby-gnome removes dependencies security/drweb||2011-08-10|Has expired: fails to fetch (website rearranged) security/drweb-postfix||2011-08-10|Has expired: fails to fetch (website rearranged) security/drweb-qmail||2011-08-10|Has expired: fails to fetch (website rearranged) security/drweb-sendmail||2011-08-10|Has expired: fails to fetch (website rearranged) math/hs-category-extras||2011-08-14|Removed: this package is obsolete lang/p5-POE-Component-Hailo||2011-08-14|Removed java/jdk14-doc|java/jdk16-doc|2011-08-14|Removed: jdk14 has been removed audio/coverhunter||2011-08-14|Has expired: required Amazon Developer Tokens are no longer available databases/gauche-gdbm||2011-08-14|Has expired: has been broken for more than a year www/wiliki||2011-08-14|Removed: depends on expired gauche-gdbm mail/scmail||2011-08-14|Removed: depends on expired gauche-gdbm x11-themes/fluxbox-sid-pack||2011-08-14|Has expired: No longer maintained upstream japanese/ical||2011-08-15|Removed lang/ocamlduce||2011-08-16|Has expired: has been broken for over a year devel/cl-asdf-binary-locations||2011-08-16|Obsoleted by ASDF 2 capabilities devel/py-istring||2011-08-17|Has expired: port is unmaintained and broken mail/sylpheed3|mail/sylpheed|2011-08-22|Removed: please use mail/sylpheed instead www/p5-FastCGI|www/p5-FCGI|2011-08-23|Rename to reflect official module name databases/db51|databases/db5|2011-08-26|Removed: please use the newer databases/db5 instead chinese/firebird||2011-08-30|Has expired: Broken, maintainer timed out, untouched for five years www/drupal5-securepages||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-xmlsitemap||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-token||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-cck||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-disknode||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-views||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-ubercart||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-taxonomy_access||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-insert-view||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-thickbox||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-taxonomy_ticker||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-tinymce||2011-08-30|Has expired: Use drupal[67] instead www/drupal5||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-adsense||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-tagadelic||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-imagefield||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-nodewords||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-bluebreeze||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-imagecache||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-nice_menus||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-ubrowser||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-google_analytics||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-bookreview||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-tapir||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-i18n||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-simplenews||2011-08-30|Has expired: Use drupal[67] instead www/drupal5-workflow_ng||2011-08-30|Has expired: Use drupal[67] instead astro/gkrellmoon||2011-09-01|Has expired: Abandonware astro/spacechart||2011-09-01|Has expired: Abandonware audio/adpcm||2011-09-01|Has expired: No more public distfiles audio/aube||2011-09-01|Has expired: Abandonware audio/festvox-aec||2011-09-01|Has expired: Broken for more than 6 months audio/gtkgep||2011-09-01|Has expired: Abandonware audio/gtkhirad||2011-09-01|Has expired: No more public distfiles audio/opmixer||2011-09-01|Has expired: No more upstream audio/swami||2011-09-01|Has expired: Abandonware audio/xmms-sndstretch||2011-09-01|Has expired: No Master Site cad/linux-gid||2011-09-01|Has expired: No more public distfiles chinese/gbscript||2011-09-01|Has expired: No more public distfiles chinese/mplayer-fonts||2011-09-01|Has expired: No more public distfiles chinese/oxford||2011-09-01|Has expired: No more public distfiles chinese/vflib||2011-09-01|Has expired: No more public distfiles databases/mysql++||2011-09-01|Has expired: No more public distfiles databases/mysql_last_value||2011-09-01|Has expired: No Master Site databases/p5-DBIx-Table||2011-09-01|Has expired: No more public distfiles deskutils/gkrellm-gtodo||2011-09-01|Has expired: No more public distfiles deskutils/xopps||2011-09-01|Has expired: No more public distfiles devel/adocman||2011-09-01|Has expired: No more public distfiles devel/bisongen||2011-09-01|Has expired: No more public distfiles devel/crow||2011-09-01|Has expired: Broken for more than 6 months devel/p5-Config-INI-MVP||2011-09-01|Has expired: Disappear from CPAN devel/p5-Date-Set||2011-09-01|Has expired: Disappear from CPAN devel/p5-File-FTS||2011-09-01|Has expired: No more public distfiles devel/p5-PerlMenu||2011-09-01|Has expired: No more public distfiles devel/p5-Proc-PIDFile||2011-09-01|Has expired: No more public distfiles devel/p5-UNIVERSAL-exports||2011-09-01|Has expired: Disappear from CPAN devel/ruby-rbtree||2011-09-01|Has expired: No Master Site dns/host||2011-09-01|Has expired: No more public distfiles emulators/linux-padjoy||2011-09-01|Has expired: No more public distfiles emulators/mame-extras||2011-09-01|Has expired: No more public distfiles emulators/snespp||2011-09-01|Has expired: Broken for more than 6 months emulators/xgs||2011-09-01|Has expired: No more public distfiles ftp/gproftpd||2011-09-01|Has expired: No more public distfiles ftp/muddleftpd||2011-09-01|Has expired: No more public distfiles audio/gx2osd||2011-09-03|Has expired: No more public distfiles devel/p5-Getopt-Mixed||2011-09-03|Use devel/p5-Getopt-Long instead net/AquaGatekeeper2||2011-09-03|Binary port of software abandoned by the vendor net/xwhois||2011-09-03|Unmaintained upstream for several years www/p5-Catalyst-Engine-HTTP-POE||2011-09-03|Use p5-Catalyst-Engine-HTTP-Prefork instead www/p5-Catalyst-Model-DBIC||2011-09-03|Obsoleted by www/p5-Catalyst-Model-DBIC-Schema www/p5-Catalyst-Plugin-Cache-Store-FastMmap||2011-09-03|Deprecated, not depended on www/p5-HTTP-MobileAttribute||2011-09-03|Use www/p5-HTTP-MobileAgent instead irc/ptlink-ircd||2011-09-03|Has expired: No upstream source, no distfile and no maintainer irc/ptlink-services||2011-09-03|Has expired: No upstream source, no distfile and no maintainer www/mediawiki115||2011-09-03|Unsupported upstream www/p5-Catalyst-Plugin-Authentication-Store-DBIC||2011-09-03|Use p5-Catalyst-Authentication-Store-DBIx-Class instead net/uproxy||2011-09-04|Master site disappeared, abandonware x11/ebuttons||2011-09-05|Has expired: Website has disappeared cad/oregano||2011-09-05|Has expired: Website has disappeared devel/jakelib2||2011-09-05|Has expired: Website has disappeared x11-wm/epiwm||2011-09-07|Has expired: Abandonware x11-toolkits/p5-GdkPixbuf||2011-09-07|Has expired: Disappear from CPAN x11-toolkits/XawPlus||2011-09-07|Has expired: No more public distfiles x11-fonts/gnome-font-sampler||2011-09-07|Has expired: No more public distfiles www/xitami||2011-09-07|Has expired: No more public distfiles www/webredirect||2011-09-07|Has expired: No more public distfiles www/webglimpse||2011-09-07|Has expired: No more public distfiles www/squishdot||2011-09-07|Has expired: No more public distfiles www/py-forgethtml||2011-09-07|Has expired: No more public distfiles www/mmosaic||2011-09-07|Has expired: No more public distfiles www/ljsm||2011-09-07|Has expired: No more public distfiles www/ljpms||2011-09-07|Has expired: No more public distfiles www/ashe||2011-09-07|Has expired: No more public distfiles textproc/europass-xsl||2011-09-07|Has expired: Broken for more than 6 months textproc/carthage||2011-09-07|Has expired: No more public distfiles korean/hlatexfonts-ocf||2011-09-07|Has expired: No more public distfiles korean/pgp.language||2011-09-07|Has expired: No more public distfiles games/xgammon||2011-09-07|Has expired: No more public distfiles korean/hanIM||2011-09-07|Has expired: No more public distfiles misc/gplbp||2011-09-07|Has expired: No more public distfiles net/vyqchat||2011-09-07|Has expired: No more public distfiles news/xmitbin||2011-09-07|Has expired: No more public distfiles games/tvp||2011-09-07|Has expired: No more public distfiles games/glasteroids||2011-09-07|Has expired: No more public distfiles korean/hanmiscutils||2011-09-07|Has expired: No more public distfiles net-p2p/hagelslag||2011-09-07|Has expired: No more public distfiles games/cgoban2||2011-09-07|Has expired: No more public distfiles games/krosswordplayer||2011-09-07|Has expired: No more public distfiles korean/helvis||2011-09-07|Has expired: No more public distfiles print/mgv||2011-09-07|Has expired: No more public distfiles japanese/linux-JM||2011-09-07|Has expired: No more public distfiles games/xlines||2011-09-07|Has expired: No more public distfiles games/xgame||2011-09-07|Has expired: No more public distfiles net/ttt||2011-09-07|Has expired: No more public distfiles games/merlin||2011-09-07|Has expired: No more public distfiles games/slige||2011-09-07|Has expired: No more public distfiles games/wmtimebomb||2011-09-07|Has expired: No more public distfiles net-mgmt/cfgstoragemk||2011-09-07|Has expired: No more public distfiles mail/libspf2-10||2011-09-09|Vulnerable, use mail/libspf2 instead mail/postfix-policyd-spf||2011-09-09|Relies on vulnerable mail/libspf2-10 multimedia/bmpx||2011-09-11|Has expired: Broken for more than 6 months editors/openoffice.org-2|editors/openoffice.org-3|2011-09-20|Unsupported upstream and vulnerable devel/monodevelop-boo||2011-09-21|Removed www/ruby-http-access||2011-09-22|Has expired: Deprecated upstream, please use www/rubygem-httpclient sysutils/wots||2011-09-22|Has expired: No more public distfiles sysutils/plod||2011-09-22|Has expired: No more public distfiles sysutils/checkservice||2011-09-22|Has expired: Broken for more than 6 months security/nsm-console||2011-09-22|Has expired: Broken for more than 6 months security/fressh||2011-09-22|Has expired: No more public distfiles palm/pose||2011-09-22|Has expired: No more public distfiles palm/isilo||2011-09-22|Has expired: No more public distfiles news/ija||2011-09-22|Has expired: Broken for more than 6 months news/PicMonger||2011-09-22|Has expired: Abandonware net/py-zopeproxy|net/py-zope.proxy|2011-09-23|Removed: please use net/py-zope.proxy instead devel/libnotifymm||2011-09-23|Has expired: Doesn't build and isn't used by anything games/abuse||2011-09-23|Has expired: Broken after games/abuse_sdl update security/donkey||2011-09-23|Has expired: No more public distfiles graphics/moth||2011-09-23|Has expired: No more public distfiles net-mgmt/aguri||2011-09-23|Has expired: No more public distfiles games/senso||2011-09-23|Has expired: No more public distfiles net-im/jabber-users-agent||2011-09-23|Has expired: No more public distfiles games/cchess||2011-09-23|Has expired: No more public distfiles devel/git-annex|devel/hs-git-annex|2011-09-26|It has become a Cabal transcript devel/py-zopetesting|devel/py-zope.testing|2011-09-27|Removed: please use devel/py-zope.testing instead astro/boinc-milkyway||2011-09-27|No longer useful www/linux-firefox-devel|www/linux-firefox|2011-09-27|Older than www/linux-firefox graphics/pgperl|graphics/p5-PGPLOT|2011-09-28|Move to a better place via repocopy devel/py-zopeInterface|devel/py-zope.interface|2011-09-29|Removed: please use devel/py-zope.interface instead audio/mt-daapd||2011-09-30|Use audio/firefly instead databases/p5-DBIx-Class-Validation||2011-09-30|Depends on textproc/p5-FormValidator-Simple, which is DEPRECATED devel/p5-Class-Data-Accessor||2011-09-30|Please consider using p5-Class-Accessor-Grouped or p5-Moose graphics/libflash||2011-09-30|gplflash is no longer supported, please use gnash instead graphics/flashplayer||2011-09-30|Depends on DEPRECATED graphics/libflash japanese/p5-FormValidator-Simple-Plugin-Number-Phone-JP||2011-09-30|Depends on textproc/p5-FormValidator-Simple, which is DEPRECATED net/p5-OAuth-Lite||2011-09-30|Depends on devel/p5-Class-Data-Accessor, which is DEPRECATED net-mgmt/py-snmp||2011-09-30|Use net-mgmt/py-snmp4 instead net-mgmt/py-twistedSNMP||2011-09-30|Relies on net-mgmt/py-snmp, which is DEPRECATED net-p2p/gift||2011-09-30|Unmaintained upstream for several years net-p2p/giftcurs||2011-09-30|Unmaintained upstream for several years net-p2p/giftoxic||2011-09-30|Unmaintained upstream for several years net-p2p/giftui||2011-09-30|Unmaintained upstream for several years net-p2p/apollon||2011-09-30|Depends on net-p2p/gift, which is DEPRECATED textproc/p5-FormValidator-Simple||2011-09-30|Depends on devel/p5-Class-Data-Accessor, which is DEPRECATED www/flashplugin-mozilla||2011-09-30|gplflash is no longer supported, please use graphics/gnash www/p5-HTML-Widget||2011-09-30|Depends on devel/p5-Class-Data-Accessor, which is DEPRECATED www/p5-Catalyst-Plugin-AutoRestart||2011-09-30|Depends on devel/p5-Class-Data-Accessor, which is DEPRECATED www/p5-Catalyst-Example-InstantCRUD||2011-09-30|Depends on www/p5-HTML-Widget, which is DEPRECATED www/p5-Catalyst-Plugin-FormValidator-Simple||2011-09-30|Depends on textproc/p5-FormValidator-Simple, which is DEPRECATED www/p5-Catalyst-Plugin-HTML-Widget||2011-09-30|Depends on www/p5-HTML-Widget, which is DEPRECATED www/asterisk-fop||2011-09-30|Depends on www/flashplugin-mozilla which is DEPRECATED www/p5-Handel||2011-09-30|Depends on textproc/p5-FormValidator-Simple, which is DEPRECATED www/p5-DBIx-Class-HTMLWidget||2011-09-30|Depends on www/p5-HTML-Widget, which is DEPRECATED www/p5-HTML-Widget-DBIC||2011-09-30|Disappear from CPAN x11-wm/fvwm24||2011-09-30|No longer supported by fvwm.org math/mupad||2011-09-30|Relies on xpm, vulnerable since 2004-09-15 net-p2p/torrentflux||2011-09-30|Vulnerable since 2006-10-07 net/tptest||2011-09-30|Vulnerable since 2009-12-17 security/pgp6||2011-09-30|Vulnerable since 2005-07-31 www/p5-RTx-RightsMatrix||2011-09-30|Only works with www/rt36, which is FORBIDDEN www/p5-RTx-Shredder||2011-09-30|Only works with www/rt36, which is FORBIDDEN www/p5-RTx-Statistics||2011-09-30|Only works with www/rt36, which is FORBIDDEN www/rt36||2011-09-30|Vulnerable since 2009-12-09 www/zope-archetypes||2011-09-30|Depends on www/plone, which is FORBIDDEN www/zope-calendaring||2011-09-30|Depends on www/plone, which is FORBIDDEN www/zope-coreblog2||2011-09-30|Depends on www/plone, which is FORBIDDEN www/zope-i18nlayer||2011-09-30|Depends on www/plone, which is FORBIDDEN www/zope-plonelanguagetool||2011-09-30|Depends on www/plone, which is FORBIDDEN www/zope-simpleblog||2011-09-30|Depends on www/plone, which is FORBIDDEN dns/nsd2||2011-09-30|EOL since 2007, unsupported. Use dns/nsd instead audio/orpheus|audio/cmus|2011-10-01|Has expired: Contains problem with autotools, security CVE-2005-3863. Use audio/cmus instead sysutils/syslog-ng3-devel|sysutils/syslog-ng-devel|2011-10-04|Port renamed sysutils/cfvers||2011-10-04|Has expired: Dead upstream, author disowns it, use git/hg instead devel/p5-Scalar-Util-Clone||2011-10-05|Disappear from CPAN print/lyx14||2011-10-05|Has expired: last release in 2007, use print/lyx16 or print/lyx instead multimedia/enjoympeg||2011-10-05|Has expired: Looks like abandonware, no more public distfiles devel/py-zopeevent|devel/py-zope.event|2011-10-08|Removed: please use devel/py-zope.event instead astro/gkrellsun||2011-10-08|Abandonware astro/xrmap||2011-10-08|No more public distfiles audio/midimountain||2011-10-08|Abandonware audio/gkrellmss||2011-10-08|Abandonware audio/gnapster||2011-10-08|Abandonware databases/xbase||2011-10-08|No more public distfiles databases/xbsql||2011-10-08|No more public distfiles games/gtkabale||2011-10-08|No more public distfiles games/battleball||2011-10-08|No more public distfiles, does not compile on ia64 or sparc64 games/race||2011-10-08|No more public distfiles games/stvef-paks||2011-10-08|No more public distfiles games/stvef-server||2011-10-08|No more public distfiles games/tome||2011-10-08|No more public distfiles games/qkmj||2011-10-08|No more public distfiles games/oilwar||2011-10-08|No more public distfiles games/xbaby||2011-10-08|No more public distfiles games/xword||2011-10-08|Abandonware games/kslide||2011-10-08|No more public distfiles graphics/xmrm||2011-10-08|No more public distfiles, does not compile on amd64 or sparc64 graphics/giftrans||2011-10-08|Upstream disappeared and distfile is not available graphics/wildmagic||2011-10-08|Broken for more than 6 months, does not fetch irc/ircd-rusnet||2011-10-08|No more public distfiles irc/tkirc||2011-10-08|No more public distfiles korean/mizifont||2011-10-08|No more public distfiles lang/freetxl||2011-10-08|No more public distfiles math/nsc2ke||2011-10-08|No more public distfiles misc/mgp-mode.el||2011-10-08|No more public distfiles multimedia/p5-RIFF-Info||2011-10-08|No more public distfiles net/p5-Net-OpenDHT||2011-10-08|No more public distfiles net/mudix||2011-10-08|No more public distfiles net-im/newsbot||2011-10-08|No more public distfiles net-im/libicq2000||2011-10-08|Abandonware net-im/gossip||2011-10-08|No longer maintained upstream, use net-im/empathy instead net-im/ickle||2011-10-08|Abandonware net-mgmt/nipper||2011-10-08|Broken for more than 6 months, does not fetch net-p2p/mldonkey-serverspy||2011-10-08|No more public distfiles news/p5-Gateway||2011-10-08|No more public distfiles print/epsmerge||2011-10-08|No more public distfiles science/at||2011-10-08|No more public distfiles science/pyvox||2011-10-08|No more public distfiles security/p5-Email-Obfuscate||2011-10-08|No more public distfiles security/libparanoia||2011-10-08|No more public distfiles security/execwrap||2011-10-08|No more public distfiles audio/p5-MusicBrainz-TRM||2011-10-08|Disappeared from CPAN mail/p5-Mail-QuoteWrap||2011-10-08|Disappeared from CPAN www/p5-Catalyst-Plugin-FormCanary||2011-10-08|Disappeared from CPAN security/snort_inline||2011-10-09|Does not build properly, no longer supported upstream databases/ruby-pg|databases/rubygem-pg|2011-10-10|Replaced by rubygem-pg databases/rubygem-postgres|databases/rubygem-pg|2011-10-10|Replaced by rubygem-pg databases/ruby-postgres|databases/rubygem-pg|2011-10-10|Replaced by rubygem-pg archivers/pecl-phar||2011-10-14|Vulnerable since 2011-01-13 comms/libsyncml||2011-10-14|Depends on devel/libsoup22, which is FORBIDDEN databases/mysql323-server||2011-10-14|Vulnerable since 2006-10-29 databases/mysql323-client||2011-10-14|Vulnerable since 2006-10-29 databases/mysql323-scripts||2011-10-14|Vulnerable since 2006-10-29 databases/mysql40-server||2011-10-14|Vulnerable since 2006-10-29 databases/mysql40-client||2011-10-14|Vulnerable since 2006-10-29 databases/mysql40-scripts||2011-10-14|Vulnerable since 2006-10-29 databases/p5-DBD-mysql40||2011-10-14|Depends on databases/mysql40-server, which is FORBIDDEN deskutils/buoh||2011-10-14|Depends on devel/libsoup22, which is FORBIDDEN deskutils/libopensync-plugin-syncml||2011-10-14|Depends on comms/libsyncml, which is DEPRECATED devel/libsoup22||2011-10-14|Vulnerable since 2011-07-28 dns/bind9-sdb-ldap||2011-10-14|Vulnerable since 2011-06-04 dns/bind9-sdb-postgresql||2011-10-14|Vulnerable since 2011-06-04 ftp/wgetpro||2011-10-14|Vulnerable since 2004-12-14 games/quake2forge||2011-10-14|Vulnerable since 2005-01-21 japanese/mutt||2011-10-14|Vulnerable since 2007-07-29 japanese/asterisk14-sounds||2011-10-14|Depends on net/asterisk14, which is FORBIDDEN net/isc-dhcp3-devel||2011-10-14|Vulnerable since 2011-04-10 net/isc-dhcp31-client||2011-10-14|Vulnerable since 2011-04-10 net/isc-dhcp31-server||2011-10-14|Vulnerable since 2011-04-10 net/isc-dhcp31-relay||2011-10-14|Vulnerable since 2011-04-10 net/asterisk-app-ldap||2011-10-14|Depends on net/asterisk14, which is FORBIDDEN net/asterisk-app-notify||2011-10-14|Depends on net/asterisk14, which is FORBIDDEN net/astfax||2011-10-14|Depends on net/asterisk14, which is FORBIDDEN net-mgmt/nagios2||2011-10-14|Vulnerable since 2009-06-30 www/gforge||2011-10-14|Vulnerable since 2005-08-09 www/linux-flashplugin7||2011-10-14|Vulnerable since at least 2008-05-30 www/plone3||2011-10-14|Vulnerable and unsupported upstream www/serendipity-devel||2011-10-14|Vulnerable since 2008-04-25 www/ziproxy||2011-10-14|Vulnerable since 2010-06-15 www/asterisk-gui||2011-10-14|Depends on net/asterisk14, which is FORBIDDEN databases/dbmetrix||2011-10-14|Depends on databases/mysql323-client, which is FORBIDDEN databases/xmysqladmin||2011-10-14|Depends on databases/mysql323-client, which is FORBIDDEN devel/subversion-freebsd||2011-10-16|Merged with devel/subversion accessibility/ktts|accessibility/jovie|2011-10-16|Renamed upstream misc/konq-plugins-kde4||2011-10-16|Merged with x11/kde4-baseapps misc/nepomukcontroller||2011-10-16|Merged with x11/kde4-runtime x11/kdebase4|x11/kde4-baseapps|2011-10-16|Renamed upstream x11/kdebase4-runtime|x11/kde4-runtime|2011-10-16|Renamed upstream x11/kdebase4-workspace|x11/kde4-workspace|2011-10-16|Renamed upstream deskutils/lightning|www/seamonkey|2011-10-19|Superseded by LIGHTNING option in SeaMonkey deskutils/lightning-thunderbird|mail/thunderbird|2011-10-19|Superseded by LIGHTNING option in Thunderbird mail/enigmail-seamonkey2|mail/enigmail-seamonkey|2011-10-19|Depends on outdated and vulnerable SeaMonkey 2.0 www/seamonkey2-i18n|www/seamonkey-i18n|2011-10-19|Depends on outdated and vulnerable SeaMonkey 2.0 www/seamonkey2|www/seamonkey|2011-10-19|Upstream support dropped and multiple vulnerabilities security/py-arm||2011-10-20|Renamed to security/arm devel/boost-pyste||2011-10-22|Has expired: Still requires GCC 3.4 (strictly) and gccxml which is deprecated (and has been broken for a while) devel/gccxml||2011-10-22|Has expired: Unmaintained upstream, still requires GCC 3.4 (strictly), just used by boost-pyste which is of archaeological interest only itself java/java-tutorial||2011-10-23|Has expired: disappeared from vendor a long time ago lang/smarteiffel||2011-10-23|Has expired: Dead upstream, broken on amd64 with gcc>4 sysutils/syslog-ng1||2011-10-24|Has expired: Suggested by syslog-ng upline, no longer supported www/tomcat41||2011-10-24|No more upstream support graphics/gnash-devel||2011-10-24|Outdated, use graphics/gnash instead net-p2p/transmisson-remote-gui|net-p2p/transmission-remote-gui|2011-10-25|Renamed to net-p2p/transmission-remote-gui x11-wm/fvwm2-devel||2011-10-25|Has expired: No longer supported by fvwm.org devel/py-myghtyutils||2011-10-27|Has expired: Merged into Beaker; use www/py-beaker instead www/myghty||2011-10-27|Has expired: Upstream suggests textproc/py-mako instead astro/weatherget||2011-10-27|Has expired: Broken b/c of weather.com new licensing rules not agreed by author devel/py-reverse||2011-10-27|Has expired: now part of pylint devel/py-vmaps||2011-10-27|Has expired: author recommends using math/py-numpy instead devel/rubygem-rack-protection||2011-10-28|Removed graphics/tumbler|deskutils/xfce4-tumbler|2011-10-29|Duplicate ports merged graphics/poppler-gtk|graphics/poppler-glib|2011-10-31|Move to match library name audio/mp3butler||2011-10-31|Depends on audio/p5-MusicBrainz-Client which is DEPRECATED audio/p5-MusicBrainz-Client||2011-10-31|Disappeared from CPAN editors/doxymacs||2011-10-31|Depends on www/w3-4, which is DEPRECATED graphics/libart||2011-10-31|Does not fetch, no more public distfiles java/jboss4||2011-10-31|Does not build with new ant korean/hanterm||2011-10-31|Depends on korean/johabfonts, which is DEPRECATED, fails to build with new utmpx korean/johabfonts||2011-10-31|No more public distfiles, installs into / korean/hlatex-psfonts-uhc-extra||2011-10-31|Depends on korean/hlatex, which is DEPRECATED korean/texinfo||2011-10-31|Depends on korean/hlatex, which is DEPRECATED korean/hlatex||2011-10-31|No more public distfiles mail/jboss-mailservices||2011-10-31|Depends on java/jboss4, which is DEPRECATED misc/p5-Geography-NationalGrid-TW||2011-10-31|Depends on misc/p5-Geography-NationalGrid, which is DEPRECATED misc/p5-Geography-NationalGrid||2011-10-31|Disappeared from CPAN net/py-timeoutsocket||2011-10-31|Upstream disappeared and distfile is no longer available textproc/p5-XML-LibRSVG||2011-10-31|Unmaintained and not used anymore textproc/javacc||2011-10-31|No more public distfiles www/w3-4||2011-10-31|Upstream disappeared and distfile is no longer available www/commonist||2011-10-31|Depends on textproc/javacc, which is DEPRECATED www/newsfeed||2011-10-31|Depends on net/py-timeoutsocket, which is DEPRECATED x11/fbsd-icons||2011-10-31|Upstream disappeared and distfile is no longer available x11-themes/geramik||2011-10-31|Depends on x11-toolkits/qtpixmap, which is DEPRECATED x11-toolkits/qtpixmap||2011-10-31|No more public distfiles x11-wm/fvwm95-i18n||2011-10-31|Depends on x11/fbsd-icons, which is DEPRECATED x11-wm/fvwm95||2011-10-31|Depends on x11/fbsd-icons, which is DEPRECATED x11-toolkits/gambas2-gb-qt||2011-10-31|Has been broken for over a year archivers/gambas2-gb-compress-bzlib2||2011-10-31|Has been broken for over a year archivers/gambas2-gb-compress-zlib||2011-10-31|Has been broken for over a year audio/gambas2-gb-sdl-sound||2011-10-31|Has been broken for over a year databases/gambas2-gb-db-firebird||2011-10-31|Has been broken for over a year databases/gambas2-gb-db-mysql||2011-10-31|Has been broken for over a year databases/gambas2-gb-db-odbc||2011-10-31|Has been broken for over a year databases/gambas2-gb-db-postgresql||2011-10-31|Has been broken for over a year databases/gambas2-gb-db-sqlite2||2011-10-31|Has been broken for over a year databases/gambas2-gb-db-sqlite3||2011-10-31|Has been broken for over a year devel/gambas2-gb-corba||2011-10-31|Has been broken for over a year devel/gambas2-gb-pcre||2011-10-31|Has been broken for over a year devel/gambas2-gb-sdl||2011-10-31|Has been broken for over a year editors/gambas2-ide||2011-10-31|Has been broken for over a year ftp/gambas2-gb-net-curl||2011-10-31|Has been broken for over a year graphics/gambas2-gb-gtk-svg||2011-10-31|Has been broken for over a year graphics/gambas2-gb-image||2011-10-31|Has been broken for over a year graphics/gambas2-gb-opengl||2011-10-31|Has been broken for over a year graphics/gambas2-gb-pdf||2011-10-31|Has been broken for over a year lang/gambas2||2011-10-31|Has been broken for over a year lang/gambas2-base||2011-10-31|Has been broken for over a year lang/gambas2-components||2011-10-31|Has been broken for over a year lang/gambas2-examples||2011-10-31|Has been broken for over a year mail/gambas2-gb-net-smtp||2011-10-31|Has been broken for over a year net/gambas2-gb-net||2011-10-31|Has been broken for over a year security/gambas2-gb-crypt||2011-10-31|Has been broken for over a year textproc/gambas2-gb-xml||2011-10-31|Has been broken for over a year x11-toolkits/gambas2-gb-gtk||2011-10-31|Has been broken for over a year x11/gambas2-gb-desktop||2011-10-31|Has been broken for over a year x11/gambas2-gb-qt-kde||2011-10-31|Has been broken for over a year games/phpua-ut2003||2011-11-01|Has expired: depends on phpua-engine games/phpua-engine||2011-11-01|Has expired: apache13 is deprecated, migrate to 2.2.x+ now games/phpua-hl||2011-11-01|Has expired: depends on phpua-engine games/phpua-ut||2011-11-01|Has expired: depends on phpua-engine games/phpua-cod||2011-11-01|Has expired: depends on phpua-engine games/uox3||2011-11-01|Has expired: no more public distfiles games/phpua-q3||2011-11-01|Has expired: depends on phpua-engine games/phpua-bf||2011-11-01|Has expired: depends on phpua-engine graphics/kallery||2011-11-01|Has expired: does not build; last release 20010511 graphics/gtksee||2011-11-01|Has expired: depends on unfetchable port archivers/bzip; last release 2004 mail/mailscanner-mrtg||2011-11-01|Has expired: apache13 is deprecated, migrate to 2.2.x+ now net-p2p/qbittorrent-28-nox11|net-p2p/qbittorrent-nox11|2011-11-01|Has expired: please migrate to net-p2p/qbittorrent net-p2p/qbittorrent-28|net-p2p/qbittorrent|2011-11-01|Has expired: please migrate to net-p2p/qbittorrent net-p2p/dctc-gui-qt||2011-11-01|Removed net-p2p/dctc-gui||2011-11-01|Removed net-p2p/dctc||2011-11-01|Has expired: No more public distfiles www/slash||2011-11-01|Has expired: apache13 is deprecated, migrate to 2.2.x+ now databases/maatkit||2011-11-01|Has expired: upstream support dropped; please consider using databases/percona-toolkit databases/mysqlman||2011-11-01|Has expired: apache13 is deprecated, migrate to 2.2.x+ now databases/mysql-editor||2011-11-01|Has expired: apache13 is deprecated, migrate to 2.2.x+ now databases/gnats||2011-11-01|Has expired: security issues graphics/poppler-qt||2011-11-01|Poppler upstream removed support for Qt 3.x audio/linux-shoutcast||2011-11-01|Unfetchable; website rearranged chinese/scim-chewing||2011-11-01|Does not configure converters/py-cjkcodecs||2011-11-01|Integrated into every Python version in the tree databases/kpogre||2011-11-01|Does not compile deskutils/mhc||2011-11-01|Does not fetch deskutils/org-mode.el6||2011-11-01|Does not fetch deskutils/gemcal||2011-11-01|Does not fetch devel/erlang-thrift||2011-11-01|Does not build dns/domtools||2011-11-01|Does not fetch editors/richtext||2011-11-01|Does not compile games/vultures-claw||2011-11-01|Does not fetch games/bomb||2011-11-01|Does not fetch games/lgeneral-data||2011-11-01|Bad pkg-plist games/xphotohunter||2011-11-01|Does not fetch graphics/gimpshop||2011-11-01|Fails to patch graphics/lightspark-devel||2011-11-01|Does not compile graphics/xmms-plazma||2011-11-01|Does not fetch graphics/py-cgkit||2011-11-01|Does not fetch, does not compile on ia64, powerpc, or sparc64 japanese/rxvt||2011-11-01|Does not fetch, fails to build with new utmpx japanese/epic4||2011-11-01|Some distfiles do not fetch java/jde||2011-11-01|Does not fetch java/kaffe||2011-11-01|Does not fetch korean/gdick||2011-11-01|HTMLs from the Yahoo! Korea Dictionary cannot be parsed, other runtime problems korean/hanterm-xf86||2011-11-01|Does not compile korean/stardict2-dict-kr||2011-11-01|Does not fetch lang/p5-JavaScript||2011-11-01|Does not fetch lang/TenDRA||2011-11-01|Website disappeared; last release in 2006, does not compile on recent FreeBSD-9 mail/freepops||2011-11-01|Does not build mail/itraxp||2011-11-01|Does not build misc/tellico||2011-11-01|Leaves files behind on deinstallation net/gsambad||2011-11-01|Does not fetch net/nocatauth-gateway||2011-11-01|Uses a UID registered to another port net/nocatauth-server||2011-11-01|Uses a UID registered to another port net/kmuddy||2011-11-01|Does not fetch net/netboot||2011-11-01|Does not build net-mgmt/jffnms||2011-11-01|Does not fetch net-p2p/frostwire||2011-11-01|Does not fetch net-p2p/azureus||2011-11-01|Does not fetch news/cleanscore||2011-11-01|Does not fetch news/nntpswitch||2011-11-01|Does not fetch news/p5-NewsLib||2011-11-01|Does not fetch russian/cyrproxy||2011-11-01|Does not fetch science/gerris||2011-11-01|Does not fetch sysutils/wmbattery||2011-11-01|Does not fetch textproc/tei-guidelines-p4||2011-11-01|Does not fetch textproc/tei-p4||2011-11-01|Does not fetch textproc/py-hyperestraier||2011-11-01|Does not fetch textproc/tdtd.el||2011-11-01|Does not fetch textproc/tei-lite||2011-11-01|Does not fetch www/phpwiki13||2011-11-01|Does not fetch www/p5-Apache-Scoreboard||2011-11-01|Depends on mod_perl www/p5-B-LexInfo||2011-11-01|Broken due the new mod_perl2 API www/phpwiki||2011-11-01|Does not fetch www/smb2www||2011-11-01|Apache13 is deprecated, migrate to 2.2.x+ now www/spip||2011-11-01|Checksum is changing daily www/monkey||2011-11-01|Does not fetch x11-toolkits/jdic||2011-11-01|Does not fetch x11-toolkits/py-kde||2011-11-01|Does not compile sysutils/rsyslog3||2011-11-02|Has expired: unsupported upstream sysutils/rsyslog3-dbi||2011-11-02|Has expired: unsupported upstream sysutils/rsyslog3-gssapi||2011-11-02|Has expired: unsupported upstream sysutils/rsyslog3-mysql||2011-11-02|Has expired: unsupported upstream sysutils/rsyslog3-pgsql||2011-11-02|Has expired: unsupported upstream sysutils/rsyslog3-relp||2011-11-02|Has expired: unsupported upstream sysutils/rsyslog4-devel||2011-11-02|Is now stable; see sysutils/rsyslog4 sysutils/rsyslog4-devel-dbi||2011-11-02|Is now stable; see sysutils/rsyslog4 sysutils/rsyslog4-devel-gnutls||2011-11-02|Is now stable; see sysutils/rsyslog4 sysutils/rsyslog4-devel-gssapi||2011-11-02|Is now stable; see sysutils/rsyslog4 sysutils/rsyslog4-devel-mysql||2011-11-02|Is now stable; see sysutils/rsyslog4 sysutils/rsyslog4-devel-pgsql||2011-11-02|Is now stable; see sysutils/rsyslog4 sysutils/rsyslog4-devel-relp||2011-11-02|Is now stable; see sysutils/rsyslog4 sysutils/rsyslog4-devel-rfc3195||2011-11-02|Is now stable; see sysutils/rsyslog4 sysutils/rsyslog4-devel-snmp||2011-11-02|Is now stable; see sysutils/rsyslog4 www/php-yaf|www/pecl-yaf|2011-11-02|The project has been moved to PECL sysutils/xfce4-places-plugin||2011-11-06|Removed, integrated in Xfce 4.8 panel lang/p5-F77|lang/p5-ExtUtils-F77|2011-11-07|Move to a better place via repocopy devel/soup||2011-11-09|Has expired: Unmaintained, use devel/libsoup graphics/clutter-qt||2011-11-09|Has expired: upstream distfile disappeared, doesn't build, and doesn't seem to be developed anymore graphics/p5-clutter||2011-11-09|Has expired: upstream distfile disappeared, and doesn't seem to be developed anymore graphics/librsvg||2011-11-09|Has expired: unmaintained and not used anymore www/p5-Catalyst-Log-Log4perl||2011-11-09|Has expired: Use Log::Log4perl::Catalyst (devel/p5-Log-Log4perl) instead lang/open-cobol-devel||2011-11-09|Has expired: No activity since 2007 databases/py-axiom||2011-11-11|Has expired: Distfile is missing, runtime broken; use databases/py-sqlobject instead sysutils/duplicity-devel||2011-11-12|Much older than current version, use sysutils/duplicity instead security/libfwbuilder-devel||2011-11-14|libfwbuilder-devel merged into fwbuilder-devel russian/apache13||2011-11-15|Has expired: no active development and known security vulnerabilities devel/tortoisehg1|devel/tortoisehg2|2011-11-22|Has expired: does not work with current devel/mercurial, use tortoisehg2 mail/zms||2011-11-22|Has expired: No longer under development, since 2009 mail/dkim-milter|mail/opendkim|2011-11-23|Has expired: switch to mail/opendkim instead lang/gcc45|lang/gcc46|2011-11-23|Superseded by gcc46 japanese/pycodec-zope||2011-11-27|Has expired: Handled in Python-2.4 upwards japanese/zope-ejsplitter||2011-11-27|Has expired: Plone4 has newer and better splitter mechanism than ejSplitter japanese/zope-jamailhost||2011-11-27|Has expired: Zope has changed MailHost specification and it is not sure jaMailHost works well japanese/pycodec||2011-11-27|Has expired: Handled in Python-2.4 upwards net-im/py-turpial||2011-11-28|Renamed to net-im/turpial databases/p5-Mysql-Diff|databases/p5-MySQL-Diff|2011-11-28|Move to a better place via repocopy mail/gtray||2011-12-02|Has expired: Upcoming ruby-gnome update removes dependencies devel/ruby-gconf2||2011-12-05|Removed devel/ruby-gnomevfs||2011-12-05|Removed devel/ruby-libglade2||2011-12-05|Removed graphics/ruby-gnomecanvas2||2011-12-05|Removed graphics/ruby-libart2||2011-12-05|Removed print/ruby-gnomeprint||2011-12-05|Removed www/ruby-gtkhtml2||2011-12-05|Removed www/ruby-gtkmozembed||2011-12-05|Removed x11-toolkits/ruby-gnomeprintui||2011-12-05|Removed x11-toolkits/ruby-gtkglext||2011-12-05|Removed x11-toolkits/ruby-panelapplet||2011-12-05|Removed x11/ruby-gnome2-all||2011-12-05|Removed devel/zeroinstall-injector||2011-12-06|Duplicates PBI functionality, and 0install feeds are available as ports audio/py-taglib||2011-12-07|Only compatible with Python 2.4. Use audio/py-tagpy instead x11-wm/wmthemeinstall||2011-12-10|Abandonware: no more upstream, no more public distfiles databases/py-pysqlite20||2011-12-11|Unmaintained upstream, only useful for python2.4 or less, no consumers in the ports tree databases/py-pysqlite21||2011-12-11|Unmaintained upstream, only useful for python2.4 or less, no consumers in the ports tree databases/py-pysqlite22||2011-12-11|Unmaintained upstream, only useful for python2.4 or less, no consumers in the ports tree databases/py-pysqlite23||2011-12-11|Unmaintained upstream, only useful for python2.4 or less, no consumers in the ports tree databases/py-PySQLite10||2011-12-11|Unmaintained upstream, only useful for python2.4 or less, no consumers in the ports tree databases/py-PySQLite11||2011-12-11|Unmaintained upstream, only useful for python2.4 or less, no consumers in the ports tree converters/py-iconvcodec||2011-12-12|Included into python itself since version 2.4 devel/py-waf||2011-12-12|Port is outdated. Author discourages system-wide installation. Download it manually security/p5-Digest-SHA256||2011-12-20|Removed: use the built-in Digest::SHA instead net/mpd4||2011-12-21|Removed japanese/ruby-refe||2011-12-21|Has been broken for 11 months www/zope-epoz||2011-12-25|Unmaintained upstream, isn't used by anything math/mingw32-libgmp4|math/mingw32-libgmp|2011-12-25|Version is no longer 4 devel/py-kss.core|devel/py-kss-core|2011-12-26|Remove bad-named port (with .core in it's name) textproc/skribe||2011-12-28|Has expired emulators/wahcade||2011-12-28|Has expired databases/keximdb||2011-12-28|Has expired: Depends on editors/koffice-kde3, which is scheduled for deletion editors/koffice-kde3||2011-12-28|Has expired net/keepalived||2011-12-28|Has expired: Depends on net/ipvs, which is scheduled for deletion net/ipvs||2011-12-28|Has expired: Designed for FreeBSD 5.x, which is no longer supported databases/fireprofile||2011-12-28|Has expired audio/gnowavcut||2011-12-28|Has expired: Abandonware mail/demime||2011-12-28|Has expired: No upstream development since 2007 x11/wmmsg||2011-12-28|Has expired: No more public distfiles x11-toolkits/libgtkeditor||2011-12-28|Has expired: No longer supported upstream, not depended upon anymore misc/demoniac||2011-12-28|Has expired: No more upstream, no more public distfiles databases/clip||2011-12-28|Has expired: No upstream development for a long time x11-toolkits/gtkextra||2011-12-28|Has expired: no longer supported upstream, no more depend on www/xpi-mousegestures||2011-12-28|Has expired: Development has been ceased and not compatible with Firefox > 2 www/xpi-mozex||2011-12-28|Has expired: Development has been ceased and not compatible with Firefox > 3 sysutils/duplicity05||2012-01-01|Has expired: This version is out of date, and the 0.6.x branch is considered stable japanese/py-kanjilib||2012-01-01|Has expired: This port is not needed with any supported python version www/squid30||2012-01-01|Has expired: This version of Squid is no longer actively maintained upstream devel/slglade||2012-01-01|Has expired: Depends on non-functional x11-toolkits/slgtk x11-toolkits/slgtk||2012-01-01|Has expired: Does not work with newer GTK+, upstream development has ceased x11-toolkits/slgtkdatabox||2012-01-01|Has expired: Depends on non-functional x11-toolkits/slgtk www/apache13|www/apache22|2012-01-01|apache13 is deprecated, use www/apache22 www/apache-contrib||2012-01-01|Has expired: Depends on expired www/apache13 www/apache13+ipv6|www/apache22|2012-01-01|apache13 is deprecated, use www/apache22 www/apache13-modperl|www/apache22|2012-01-01|apache13 is deprecated, use www/apache22 www/apache13-modssl|www/apache22|2012-01-01|apache13 is deprecated, use www/apache22 www/apache13-modssl+ipv6|www/apache22|2012-01-01|apache13 is deprecated, use www/apache22 www/apache13-ssl|www/apache22|2012-01-01|apache13 is deprecated, use www/apache22 databases/p5-ApacheDBILogConfig||2012-01-01|Has expired: Depends on expired www/apache13 databases/p5-ApacheDBILogger||2012-01-01|Has expired: Depends on expired www/apache13 textproc/p5-Apache-XBEL||2012-01-01|Has expired: Depends on expired www/apache13 www/auth_ldap||2012-01-01|Has expired: Depends on expired www/apache13 www/kdedict||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_access_identd||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_access_referer||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_accounting||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_auth_cookie_mysql|www/mod_auth_cookie_mysql2|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_auth_external|www/mod_auth_external2|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_auth_imap|www/mod_auth_imap2|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_auth_kerb|www/mod_auth_kerb2|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_auth_mysql|www/mod_auth_mysql2|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_auth_pam|www/mod_auth_pam2|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_auth_pgsql|www/mod_auth_pgsql2|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_auth_useragent||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_backhand||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_bandwidth||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_bf||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_blosxom||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_blowchunks||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_bunzip2||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_cgi_debug||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_color||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_curb||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_cvs|www/mod_cvs2|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_dav||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_dtcl||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_extract_forwarded_ap13|www/mod_extract_forwarded|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_filter||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_geoip|www/mod_geoip2|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_gzip|www/mod_gzip2|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_index_rss||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_layout|www/mod_layout22|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_limitipconn|www/mod_limitipconn2|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_log_spread||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_log_sql|www/mod_log_sql2|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_macro|www/mod_macro22|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_mp3||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_mylo||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_ntlm|www/mod_ntlm2|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_perl|www/mod_perl2|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_proxy_add_forward||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_put||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_python|www/mod_python3|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_realip||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_rpaf|www/mod_rpaf2|2012-01-01|Has expired: Depends on expired www/apache13 www/mod_sed||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_sequester||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_shapvh||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_sqlinclude||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_ticket||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_trigger||2012-01-01|Has expired: Depends on expired www/apache13 www/mod_tsunami||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-AntiSpam||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-AuthenCache||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-AuthenURL||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-AutoIndex||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-AxKit-Plugin-AddXSLParams-Request||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-Clean|www/p5-Apache-Clean2|2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-Compress||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-CompressClientFixup||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-DBI-mp1|www/p5-Apache-DBI|2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-DebugInfo||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-DumpHeaders||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-Filter||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-Icon||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-Language||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-NNTPGateway||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-PageKit||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-Peek||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-Radius||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-Reload||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-SSI||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-SubProcess||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-Template||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-AxKit||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-AxKit-XSP-Cookie||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-AxKit-XSP-ESQL||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-AxKit-XSP-Exception||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-AxKit-XSP-IfParam||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-AxKit-XSP-Param||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-AxKit-XSP-PerForm||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-AxKit-XSP-Sendmail||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-AxKit-XSP-Util||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-AxKit-XSP-WebUtils||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Bundle-Slash||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Text-Markdown-ApacheHandler||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-libapreq|www/p5-libapreq2|2012-01-01|Has expired: Depends on expired www/apache13 www/p5-libapreq-static||2012-01-01|Has expired: Depends on expired www/apache13 www/web-traceroute||2012-01-01|Has expired: Depends on expired www/apache13 www/wget4web||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-Test||2012-01-01|Has expired: Depends on expired www/apache13 net-im/jwchat||2012-01-01|Has expired: Depends on expired www/apache13 www/p5-Apache-DBI-mp2|www/p5-Apache-DBI|2012-01-01|This sub-port is no longer needed editors/ged||2012-01-04|Removed: Use ed from base instead ftp/proftpd-devel||2012-01-04|Removed devel/ruby-thrift|devel/rubygem-thrift|2012-01-04|Renamed: now a rubygems module x11-wm/cl-stumpwm||2012-01-04|Abandoned copy of x11-wm/stumpwm www/knowledgekit||2012-01-06|Development seems stalled. Last release is from 1999. Doesn't works with Zope 2.13 www/znavigator||2012-01-06|Development seems stalled. Last release is from 2000 www/zope-FileSystemSite||2012-01-06|Doesn't work with modern Zope versions www/zope-annotations||2012-01-06|Doesn't work with modern Zope versions www/zope-btreefolder2||2012-01-06|Doesn't work with modern Zope versions www/zope-cmfactionicons||2012-01-06|Doesn't work with modern Zope versions www/zope-cmfformcontroller||2012-01-06|Doesn't work with modern Zope versions www/zope-cmfforum||2012-01-06|Development seems stalled. Last release is from 2002 www/zope-cmfphoto||2012-01-06|Development seems stalled. Last release is from 2004 www/zope-cmfphotoalbum||2012-01-06|Development seems stalled. Last release is from 2004 www/zope-cmfquickinstaller||2012-01-06|Doesn't work with modern Zope versions www/zope-coreblog||2012-01-06|Development ceased www/zope-exuserfolder||2012-01-06|Doesn't work with modern Zope versions www/zope-formulator||2012-01-06|Doesn't work with modern Zope versions www/zope-generator||2012-01-06|Development seems stalled. Last release from 2005 www/zope-groupuserfolder||2012-01-06|Doesn't work with modern Zope versions www/zope-kupu||2012-01-06|Doesn't work with modern Zope versions www/zope-mimetypesregistry||2012-01-06|Doesn't work with modern Zope versions www/zope-mindmapbbs||2012-01-06|Development seems stalled. Last release is from 2004 www/zope-mysqluserfolder||2012-01-06|Development seems stalled. Last release is from 2005 www/zope-parsedxml||2012-01-06|Doesn't work with modern Zope versions www/zope-placelesstranslationservice||2012-01-06|Doesn't work with modern Zope versions www/zope-portaltransforms||2012-01-06|Doesn't work with modern Zope versions www/zope-proxyindex||2012-01-06|Doesn't work with modern Zope versions www/zope-silva||2012-01-06|Doesn't work with modern Zope versions www/zope-silvaviews||2012-01-06|Doesn't work with modern Zope versions www/zope-ttwtype||2012-01-06|Development seems stalled. Last release is from 2003 www/zope-validation||2012-01-06|Doesn't work with modern Zope versions www/zope-xmlmethods||2012-01-06|Development seems stalled. Last release is from 2003 www/zope-xmlwidgets||2012-01-06|Doesn't work with modern Zope versions www/zope-zmysqlda||2012-01-06|Doesn't work with modern Zope versions www/zope-zsyncer||2012-01-06|Doesn't work with modern Zope versions www/zope-zwiki||2012-01-06|Doesn't work with modern Zope versions www/zope210||2012-01-06|End of life is reached www/zope28||2012-01-06|End of life is reached www/zope29||2012-01-06|End of life is reached www/zope3||2012-01-06|End of life is reached x11-drivers/xf86-input-citron||2012-01-07|Removed multimedia/avifile||2012-01-08|Has expired: Broken for an extended period, superseded by other multimedia players devel/bonobo-conf||2012-01-08|Has expired: No longer supported upstream, not depended upon anymore www/typo343||2012-01-08|Has expired: Support will end in the near future, see http://typo3.org/download/packages/ for details devel/gnome-crash||2012-01-08|Has expired: No longer supported upstream, not depended upon anymore x11-toolkits/gob||2012-01-08|Has expired: No longer supported upstream, not depended upon anymore www/rubygem-htauth||2012-01-08|Has expired: broke for ~12 months www/instiki||2012-01-08|Has expired: has been marked ignore since 2010/09/16 mail/msmtpqueue||2012-01-08|Has expired: These scripts now come with mail/msmtp security/cryptplug||2012-01-08|Has expired: development has ceased security/gpgme03||2012-01-08|Has expired: superseded by security/gpgme databases/pear-Doctrine||2012-01-08|Has expired: Please upgrade to 1.2.x: http://svn.doctrine-project.org/tags/1.2.4/UPGRADE_TO_1_2 x11-themes/gtk-qn-x11-theme||2012-01-08|Has expired: No more public distfiles x11-themes/gtk-zenith-theme||2012-01-08|Has expired: No more public distfiles graphics/stl2pov|graphics/py-stl|2012-01-08|New port graphics/py-stl deprecates graphics/stl2pov devel/py-py_static_check|devel/py_static_check|2012-01-12|Rename for consistency databases/phpmyadmin211||2012-01-13|Has expired: No longer supported by the phpMyAdmin project www/xpi-autobrowse||2012-01-14|Has expired: Development has been ceased and not compatible with Firefox > 7 www/xpi-joga||2012-01-14|Has expired: Development has been ceased and not compatible with Firefox > 7 www/xpi-num2web||2012-01-14|Has expired: Development has been ceased and not compatible with Firefox > 7 www/xpi-savegenpage||2012-01-14|Has expired: Development has been ceased and not compatible with Firefox > 7 www/xpi-videodownloader||2012-01-14|Has expired: Development has been ceased and not compatible with Firefox > 7 www/xpi-xpcom-component-viewer||2012-01-14|Has expired: Development has been ceased and not compatible with Firefox > 7 net-im/skype20||2012-01-14|Has expired: old version without many of the newer features; please try net-im/skype instead sysutils/rsyslog4|sysutils/rsyslog5|2012-01-16|EOL Upstream sysutils/rsyslog4-dbi|sysutils/rsyslog5-dbi|2012-01-16|EOL Upstream sysutils/rsyslog4-gnutls|sysutils/rsyslog5-gnutls|2012-01-16|EOL Upstream sysutils/rsyslog4-gssapi|sysutils/rsyslog5-gssapi|2012-01-16|EOL Upstream sysutils/rsyslog4-mysql|sysutils/rsyslog5-mysql|2012-01-16|EOL Upstream sysutils/rsyslog4-pgsql|sysutils/rsyslog5-pgsql|2012-01-16|EOL Upstream sysutils/rsyslog4-relp|sysutils/rsyslog5-relp|2012-01-16|EOL Upstream sysutils/rsyslog4-rfc3195|sysutils/rsyslog5-rfc3195|2012-01-16|EOL Upstream sysutils/rsyslog4-snmp|sysutils/rsyslog5-snmp|2012-01-16|EOL Upstream net-im/gicq||2012-01-18|Runtime is broken. Unmaintained upstream net-im/libicq||2012-01-18|Runtime is broken. Unmaintained upstream devel/luajit|lang/luajit|2012-01-19|Compilers typically live in the lang category devel/p5-DBIx-Class-Schema-PopulateMore||2012-01-20|Removed textproc/qgoogletranslator||2012-01-20|Has expired: Runtime is broken because Google close free usage of API. Project closed www/py-rssdler||2012-01-25|Runtime is mostly broken, abandoned upstream. Use www/py-flexget instead ftp/proftpd-mysql|databases/proftpd-mod_sql_mysql|2012-01-26|Module now in slave port games/flightgear-aircrafts|games/flightgear-aircraft|2012-01-31|Renamed for better naming audio/wmmixer||2012-02-01|EOL Upstream; please use audio/wmsmixer instead x11-wm/xfce|x11-wm/xfce4|2012-02-02|Has expired: abandoned upstream, use x11-wm/xfce4 instead sysutils/py-dvdvideo|sysutils/dvdvideo|2012-02-03|Renamed for better naming science/R-cran-survival||2012-02-03|This CRAN port has been included in math/R editors/openoffice.org-3-devel|editors/openoffice-3-devel|2012-02-06|Project was taken over and renamed www/zope-cmf||2012-02-07|Has expired: Doesn't work with modern Zope versions chinese/fcitx-keyboard|textproc/fcitx-keyboard|2012-02-07|Moved to more appropriate category textproc/hs-attoparsec-text||2012-02-13|Removed: The package is deprecated devel/hs-hmake||2012-02-13|Removed: Broken, unmaintained upstream net/yate-devel||2012-02-17|Removed, please use net/yate databases/p5-postgresql-plperl|databases/postgresql84-plperl|2012-02-19|Split into versioned ports devel/p5-Version-Requirements||2012-03-01|Removed: deprecated, use CPAN::Meta::Requirements (devel/p5-CPAN-Meta >= 2.113640) instead net/ipw-firmware||2012-03-02|Removed: is already included in base system net/ipw-firmware-kmod||2012-03-02|Removed: is already included in base system net/iwi-firmware||2012-03-02|Removed: is already included in base system net/iwi-firmware-kmod||2012-03-02|Removed: is already included in base system devel/dklibs||2012-03-03|Has expired: not needed for graphics/bmeps anymore, no other users security/blocksshd||2012-03-03|Removed: security/sshguard is more active and a better tool net/p5-Net-Subnets||2012-03-03|Has expired: Disappeared from CPAN www/mediawiki116||2012-03-04|Has expired: Unsupported upstream databases/postgresql-docs|databases/postgresql84-docs|2012-03-04|Split into versioned ports databases/postgresql-pltcl|databases/postgresql84-pltcl|2012-03-05|Split into versioned ports x11-wm/scrotwm|x11-wm/spectrwm|2012-03-05|Project renamed databases/p5-Mysql||2012-03-07|No release in 11 years, doesn't work with mysql 4.0+, unmaintained audio/easytag-devel||2012-03-12|Outdated development version korean/unfonts-ttf||2012-03-16|Was divided into korean/unfonts-core and korean/unfonts-extra mail/py-email||2012-03-17|Has expired: Included into all supported python versions databases/py25-bsddb||2012-03-18|Has expired: This was only needed for mail/py-spambayes. Now it's not www/p5-Apache-AddHostPath||2012-03-20|Has expired: Only works with mod_perl 1 which is removed www/p5-Apache-Archive||2012-03-20|Has expired: Requires mod_perl 1 which is gone editors/openoffice.org-3-RC||2012-03-20|Removed graphics/vrml2pov||2012-03-21|Has expired: unfetchable (no public distfiles) net-p2p/fidelio||2012-03-21|Has expired: Hotline services does not exists anymore japanese/postgresql-tcltk||2012-03-21|Has expired: Broken for months with no one caring, superseded by http://pgtclng.sourceforge.net/ databases/postgresql-tcltk|databases/pgtcl|2012-03-21|Has expired: Broken for months with no one caring, superseded by http://pgtclng.sourceforge.net/ devel/p5-Make-Cache||2012-03-25|Has expired: Removed from CPAN, does not work, unmaintained databases/gbib||2012-03-26|Has expired sysutils/syscp|sysutils/froxlor|2012-03-26|Has expired: Long ditched, possibly dangerous and replaced with sysutils/froxlor audio/py-libtunepimp||2012-04-07|Has expired: MusicBrainz RDF webservice no longer functions audio/py-musicbrainz||2012-04-07|Has expired: MusicBrainz RDF webservice no longer functions audio/p5-MusicBrainz-Queries||2012-04-09|Has expired: MusicBrainz RDF webservice no longer functions audio/ruby-musicbrainz||2012-04-09|Has expired: MusicBrainz RDF webservice no longer functions converters/ruby-lv||2012-04-09|Has expired: upstream no longer has this devel/p5-Getopt-Popt||2012-04-09|Has expired: gone from CPAN net/p5-Net-Rendezvous||2012-04-09|Has expired: superseded by dns/p5-Net-Bonjour audio/gstreamer-plugins-musicbrainz||2012-04-09|Has expired: MusicBrainz RDF webservice no longer functions x11/wrapper||2012-04-10|Has expired: not needed anymore www/resin2||2012-04-10|Has expired: unsupported upstream, consider www/resin3 ftp/ftp-proxy||2012-04-13|Has expired: is a part of the base system in all supported FreeBSD versions databases/postgresql82-server||2012-04-15|Has expired: EOL and multiple vulnerabilities databases/postgresql82-client||2012-04-15|Has expired: EOL and multiple vulnerabilities databases/postgresql82-contrib||2012-04-15|Has expired: EOL and multiple vulnerabilities www/pivot-weblog||2012-04-15|Has expired: unsupported upstream, consider www/pivotx java/jbootstrap||2012-04-16|Has expired: bootstrap for an ancient version of Java lang/python-doc-postscript-a4||2012-04-17|This port was broken for a long time, deprecated upstream lang/python-doc-postscript-letter||2012-04-17|This port was broken for a long time, deprecated upstream mail/dbmail20||2012-04-18|Has expired: No longer supported upstream. No ports depend on this mail/dbmail21||2012-04-18|Has expired: No longer supported upstream. No ports depend on this mail/dbmail23||2012-04-18|Has expired: No longer supported upstream. No ports depend on this math/octave-forge-times||2012-04-18|Deprecated upstream www/fpc-httpd13||2012-04-19|Obsolete freepascal unit. Use www/fpc-httpd22 instead of it www/fpc-httpd20||2012-04-19|Obsolete freepascal unit. Use www/fpc-httpd22 instead of it net/socks5||2012-04-21|Removed games/netpanzer-data||2012-04-25|No longer needed www/typo344||2012-04-30|Has expired: Support will end in the near future, see http://typo3.org/download/packages/ for details databases/py-MySQLdb-devel|databases/py-MySQLdb|2012-05-01|Port is outdated, use databases/py-MySQLdb instead misc/fortune-mod-the-godfather||2012-05-07|Has expired: No longer supported editors/openoffice.org-3|editors/openoffice-3|2012-05-09|Project renamed devel/py-boto-devel|devel/py-boto|2012-05-09|Upstream does not provide development snapshots anymore, use devel/py-boto instead graphics/R-cran-labeling||2012-05-09|Removed multimedia/mythtv-themes||2012-05-10|Included in multimedia/mythtv since 0.25 multimedia/mytplugin-mythvideo||2012-05-10|Included in multimedia/mythtv since 0.25 archivers/php4-bz2||2012-05-11|Has expired: php4 is EOLed archivers/php4-zlib||2012-05-11|Has expired: php4 is EOLed converters/php4-iconv||2012-05-11|Has expired: php4 is EOLed converters/php4-mbstring||2012-05-11|Has expired: php4 is EOLed converters/php4-recode||2012-05-11|Has expired: php4 is EOLed databases/php4-dba||2012-05-11|Has expired: php4 is EOLed databases/php4-dbase||2012-05-11|Has expired: php4 is EOLed databases/php4-dbx||2012-05-11|Has expired: php4 is EOLed databases/php4-filepro||2012-05-11|Has expired: php4 is EOLed databases/php4-interbase||2012-05-11|Has expired: php4 is EOLed databases/php4-mssql||2012-05-11|Has expired: php4 is EOLed databases/php4-mysql||2012-05-11|Has expired: php4 is EOLed databases/php4-odbc||2012-05-11|Has expired: php4 is EOLed databases/php4-oracle||2012-05-11|Has expired: php4 is EOLed databases/php4-pgsql||2012-05-11|Has expired: php4 is EOLed databases/php4-rrdtool||2012-05-11|Removed databases/php4-sybase_ct||2012-05-11|Has expired: php4 is EOLed devel/php4-dio||2012-05-11|Has expired: php4 is EOLed devel/php4-gettext||2012-05-11|Has expired: php4 is EOLed devel/php4-mcve||2012-05-11|Has expired: php4 is EOLed devel/php4-ncurses||2012-05-11|Has expired: php4 is EOLed devel/php4-pcntl||2012-05-11|Has expired: php4 is EOLed devel/php4-pcre||2012-05-11|Has expired: php4 is EOLed devel/php4-readline||2012-05-11|Has expired: php4 is EOLed devel/php4-shmop||2012-05-11|Has expired: php4 is EOLed devel/php4-sysvmsg||2012-05-11|Has expired: php4 is EOLed devel/php4-sysvsem||2012-05-11|Has expired: php4 is EOLed devel/php4-sysvshm||2012-05-11|Has expired: php4 is EOLed devel/php4-tokenizer||2012-05-11|Has expired: php4 is EOLed finance/php4-pfpro||2012-05-11|Has expired: php4 is EOLed ftp/php4-curl||2012-05-11|Has expired: php4 is EOLed ftp/php4-ftp||2012-05-11|Has expired: php4 is EOLed graphics/php4-chartdirector||2012-05-11|Has expired: php4 is EOLed graphics/php4-exif||2012-05-11|Has expired: php4 is EOLed graphics/php4-gd||2012-05-11|Has expired: php4 is EOLed lang/php4||2012-05-11|Removed lang/php4-extensions||2012-05-11|Has expired: php4 is EOLed lang/php4-overload||2012-05-11|Has expired: php4 is EOLed mail/php4-imap||2012-05-11|Has expired: php4 is EOLed math/php4-bcmath||2012-05-11|Has expired: php4 is EOLed math/php4-gmp||2012-05-11|Has expired: php4 is EOLed misc/php4-calendar||2012-05-11|Has expired: php4 is EOLed misc/php4-mcal||2012-05-11|Has expired: php4 is EOLed net/php4-ldap||2012-05-11|Has expired: php4 is EOLed net/php4-sockets||2012-05-11|Has expired: php4 is EOLed net/php4-xmlrpc||2012-05-11|Has expired: php4 is EOLed net/php4-yp||2012-05-11|Has expired: php4 is EOLed net-mgmt/php4-snmp||2012-05-11|Has expired: php4 is EOLed security/php4-crack||2012-05-11|Has expired: php4 is EOLed security/php4-mcrypt||2012-05-11|Has expired: php4 is EOLed security/php4-mhash||2012-05-11|Has expired: php4 is EOLed security/php4-openssl||2012-05-11|Has expired: php4 is EOLed sysutils/php4-posix||2012-05-11|Has expired: php4 is EOLed textproc/php4-ctype||2012-05-11|Has expired: php4 is EOLed textproc/php4-domxml||2012-05-11|Has expired: php4 is EOLed textproc/php4-pspell||2012-05-11|Has expired: php4 is EOLed textproc/php4-wddx||2012-05-11|Has expired: php4 is EOLed textproc/php4-xml||2012-05-11|Has expired: php4 is EOLed textproc/php4-xslt||2012-05-11|Has expired: php4 is EOLed www/php4-session||2012-05-11|Has expired: php4 is EOLed archivers/pecl-zip||2012-05-11|Has expired: php4 is EOLed databases/pecl-sqlite||2012-05-11|Has expired: php4 is EOLed devel/pear-XML_XPath||2012-05-11|Has expired: php4 is EOLed devel/pecl-json||2012-05-11|Has expired: php4 is EOLed www/pecl-tidy||2012-05-11|Has expired: php4 is EOLed www/php-dyn||2012-05-11|Has expired: php4 is EOLed security/pecl-hash||2012-05-11|Has expired: php4 is EOLed net/phpldapadmin098||2012-05-11|Has expired: php4 is EOLed graphics/jpgraph||2012-05-11|Removed games/netrek-COW3-bin|games/netrek-client-cow|2012-05-11|COW3-bin obsolete in favor of client-cow www/firefox-sync|www/firefox-esr|2012-05-12|Integrated in newer version of Firefox www/firefox36|www/firefox-esr|2012-05-12|Upstream support dropped www/firefox36-i18n|www/firefox-esr-i18n|2012-05-12|Upstream support dropped mail/enigmail-thunderbird3|mail/enigmail-thunderbird-esr|2012-05-12|Depends on obsolete Thunderbird 3.1 mail/thunderbird3|mail/thunderbird-esr|2012-05-12|Upstream support dropped mail/thunderbird3-i18n|mail/thunderbird-esr-i18n|2012-05-12|Upstream support dropped databases/php5-sqlite||2012-05-16|Removed from core php www/py-django-css|www/py-django_compressor|2012-05-16|Upstream development stopped. Use www/py-django_compressor instead net-p2p/py-bittorrent-core||2012-05-16|Broken for more than 6 months, there are no upstream distfiles anymore net-p2p/py-bittorrent||2012-05-16|Broken for more than 6 months, there are no upstream distfiles anymore astro/boinc-einsteinathome||2012-05-16|Not usable with current project x11/avant-window-navigator-xfce4||2012-05-18|Has expired: Broken for more than 6 months deskutils/xfce4-volstatus-icon||2012-05-18|Has expired: Broken for more than 6 months multimedia/xfmedia-remote-plugin||2012-05-18|Has expired: Broken for more than 6 months sysutils/thunar-volman-plugin||2012-05-18|Has expired: Broken for more than 6 months databases/sqlite34||2012-05-18|Has expired: No longer supported, please use databases/sqlite3 instead graphics/long-exposure-tools||2012-05-18|Has expired: broken for more than 6 months, unmaintained upstream misc/kde3-i18n-hsb||2012-05-18|Has expired: Broken for more than 6 months misc/kde3-i18n-mt||2012-05-18|Has expired: Broken for more than 6 months misc/kde3-i18n-nso||2012-05-18|Has expired: Broken for more than 6 months net-im/pino||2012-05-18|Has expired: broken for more than 6 months, unmaintained upstream print/perlftlib||2012-05-18|Has expired: No more upstream, no longer used in the ports tree editors/libreoffice-legacy||2012-05-18|Has expired: not supported upstream, maintaining two versions of LibreOffice is really painful devel/p5-POE-Exceptions||2012-05-18|Has expired: included in devel/p5-POE and not needed according to configure message net/p5-Net-Services||2012-05-18|Has expired: Removed from CPAN net/perldap||2012-05-18|Has expired: Broken for more than 6 months security/p5-Crypt-Cryptix||2012-05-18|Has expired: Gone from CPAN, project site says project is dead www/p5-HTML-Sanitizer||2012-05-18|Has expired: no longer in CPAN www/p5-IMDB-Movie||2012-05-18|Has expired: Removed from CPAN net/ng_car||2012-05-19|In base for all supported versions of FreeBSD palm/coldsync||2012-05-19|Broken for more than 6 months, does not compile graphics/linux-ac3d||2012-05-19|Has expired: Broken for more than 6 months archivers/pecl-bz2|archivers/php5-bz2|2012-05-20|bz2 is included in core php misc/freshmeat-submit|misc/freecode-submit|2012-05-20|Project renamed devel/kdebindings4-kross-interpreters||2012-05-25|kdebindings4 ports have been refactored devel/kdebindings4-python||2012-05-25|kdebindings4 ports have been refactored devel/kdebindings4-ruby||2012-05-25|kdebindings4 ports have been refactored devel/kdebindings4-smoke||2012-05-25|kdebindings4 ports have been refactored deskutils/plasma-applet-icontasks||2012-05-25|Integrated to KDE SC 4.8 audio/audacity-devel|audio/audacity|2012-05-30|Removed in favor of stable editors/koffice-i18n||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-af||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-bg||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-br||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-bs||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-ca||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-cs||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-cy||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-da||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-el||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-en_GB||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-eo||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-es||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-et||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-eu||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-fa||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-fi||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-ga||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-gl||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-hi||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-hsb||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-is||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-it||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-km||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-lo||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-lt||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-lv||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-mk||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-ms||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-mt||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-nb||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-nl||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-nn||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-ro||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-se||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-sk||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-sl||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-sr||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-sr_Latn||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-sv||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-ta||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-tg||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-th||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-tr||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-uz||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-ven||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-xh||2012-05-31|Depends on editors/koffice-kde3, which is deleted editors/koffice-i18n-zu||2012-05-31|Depends on editors/koffice-kde3, which is deleted chinese/koffice-kde4-l10n-zh_CN|chinese/calligra-l10n-zh_CN|2012-05-31|Unmaintained upstream, use Calligra chinese/koffice-kde4-l10n-zh_TW|chinese/calligra-l10n-zh_TW|2012-05-31|Unmaintained upstream, use Calligra editors/koffice-kde4-l10n-ca_valencia|editors/calligra-l10n-ca_valencia|2012-05-31|Unmaintained upstream, use Calligra editors/koffice-kde4-l10n-ca|editors/calligra-l10n-ca|2012-05-31|Unmaintained upstream, use Calligra editors/koffice-kde4-l10n-da|editors/calligra-l10n-da|2012-05-31|Unmaintained upstream, use Calligra editors/koffice-kde4-l10n-el|editors/calligra-l10n-el|2012-05-31|Unmaintained upstream, use Calligra editors/koffice-kde4-l10n-en_GB|editors/calligra-l10n-en_GB|2012-05-31|Unmaintained upstream, use Calligra editors/koffice-kde4-l10n-es|editors/calligra-l10n-es|2012-05-31|Unmaintained upstream, use Calligra editors/koffice-kde4-l10n-et|editors/calligra-l10n-et|2012-05-31|Unmaintained upstream, use Calligra editors/koffice-kde4-l10n-gl||2012-05-31|Unmaintained upstream editors/koffice-kde4-l10n-it|editors/calligra-l10n-it|2012-05-31|Unmaintained upstream, use Calligra editors/koffice-kde4-l10n-kk|editors/calligra-l10n-kk|2012-05-31|Unmaintained upstream, use Calligra editors/koffice-kde4-l10n-nb|editors/calligra-l10n-nb|2012-05-31|Unmaintained upstream, use Calligra editors/koffice-kde4-l10n-nds|editors/calligra-l10n-nds|2012-05-31|Unmaintained upstream, use Calligra editors/koffice-kde4-l10n-nl|editors/calligra-l10n-nl|2012-05-31|Unmaintained upstream, use Calligra editors/koffice-kde4-l10n-sv|editors/calligra-l10n-sv|2012-05-31|Unmaintained upstream, use Calligra editors/koffice-kde4-l10n-tr||2012-05-31|Unmaintained upstream editors/koffice-kde4-l10n-wa||2012-05-31|Unmaintained upstream editors/koffice-kde4-l10n|editors/calligra-l10n|2012-05-31|Unmaintained upstream, use Calligra editors/koffice-kde4|editors/calligra|2012-05-31|Unmaintained upstream, use Calligra french/koffice-kde4-l10n|french/calligra-l10n|2012-05-31|Unmaintained upstream, use Calligra german/koffice-kde4-l10n|german/calligra-l10n|2012-05-31|Unmaintained upstream, use Calligra hungarian/koffice-kde4-l10n|hungarian/calligra-l10n|2012-05-31|Unmaintained upstream, use Calligra japanese/koffice-kde4-l10n||2012-05-31|Unmaintained upstream polish/koffice-kde4-l10n|polish/calligra-l10n|2012-05-31|Unmaintained upstream, use Calligra portuguese/koffice-kde4-l10n-pt_BR|portuguese/calligra-l10n-pt_BR|2012-05-31|Unmaintained upstream, use Calligra portuguese/koffice-kde4-l10n|portuguese/calligra-l10n|2012-05-31|Unmaintained upstream, use Calligra russian/koffice-kde4-l10n|russian/calligra-l10n|2012-05-31|Unmaintained upstream, use Calligra ukrainian/koffice-kde4-l10n|ukrainian/calligra-l10n|2012-05-31|Unmaintained upstream, use Calligra dns/drill||2012-05-31|drill tool is a part of ldns package now devel/hs-binary||2012-06-03|Removed: this package became part of lang/ghc devel/hs-convertible-text||2012-06-03|Removed: this package is obsolete devel/hs-control-monad-attempt||2012-06-03|Removed: this package is obsolete devel/hs-data-object||2012-06-03|Removed: this package is obsolete devel/hs-data-object-yaml||2012-06-03|Removed: this package is obsolete devel/hs-deepseq||2012-06-03|Removed: this package became part of lang/ghc devel/hs-ghc-paths-docs||2012-06-03|Removed: not needed anymore devel/hs-haddock-docs||2012-06-03|Removed: not needed anymore devel/hs-mtl-docs||2012-06-03|Removed: not needed anymore devel/hs-pool||2012-06-03|Removed: this package is obsolete devel/hs-transformers-docs||2012-06-03|Removed: not needed anymore print/hs-hscolour-docs||2012-06-03|Removed: not needed anymore textproc/hs-xhtml-docs||2012-06-03|Removed: not needed anymore textproc/hs-xml-enumerator||2012-06-03|Removed: this package is obsolete www/hs-happstack-data||2012-06-03|Removed: this package is obsolete www/hs-happstack-ixset||2012-06-03|Removed: this package is obsolete www/hs-happstack-state||2012-06-03|Removed: this package is obsolete www/hs-happstack-util||2012-06-03|Removed: this package is obsolete www/hs-http-enumerator||2012-06-03|Removed: this package is obsolete graphics/libungif|graphics/giflib|2012-06-05|Replaced by giflib mail/kavmilter||2012-06-06|Removed: security package unmaintained upstream sysutils/linux-megacli|sysutils/megacli|2012-06-06|Removed: native version available ftp/wu-ftpd+ipv6||2012-06-07|Removed: Upstream disappeared and distfile is no longer available sysutils/pwgen2|sysutils/pwgen|2012-06-07|pwgen2 is a continuation of pwgen that fixes several serious bugs x11-toolkits/xforms-i18n||2012-06-08|Has expired: Broken for more than 6 months security/ifd-devkit||2012-06-08|Conflicts with dependency, not useful www/kazehakase||2012-06-10|Has expired: Broken for more than 6 months x11/trayer-srg|x11/trayer|2012-06-11|Merged into x11/trayer games/flightgear-atlas||2012-06-12|Unmaintained upstream deskutils/sciplore-mindmapping||2012-06-12|Has expired: Discontinued, use deskutils/docear instead devel/libtool-fixed||2012-06-12|Has expired: libtool has been fixed, no more need of this version devel/p5-Devel-ObjectTracker||2012-06-12|Has expired: removed from CPAN devel/rubygem-vmc||2012-06-12|Has expired: Broken for more than 6 months games/antrix||2012-06-12|Has expired: no more public distfiles, abandoned upstream games/sfbol||2012-06-12|Has expired: Broken for more than 6 months java/eclipseme||2012-06-12|Has expired: depends on java/sun-wtk mail/lmtpd||2012-06-12|Has expired: Broken for more than 6 months print/cups-magicolor||2012-06-12|Has expired: Broken for more than 6 months security/pantera||2012-06-12|Has expired: Broken for more than 6 months graphics/djvulibre-nox11|graphics/djvulibre|2012-06-13|Merged back into graphics/djvulibre games/wesnoth-devel||2012-06-13|Has expired: Broken for more than 6 months www/trac-ticketdelete||2012-06-14|Has expired: Functionality of this plugin has been incorporated into Trac 0.12 x11-themes/gtk-qt-engine||2012-06-16|Has expired: Broken for more than 6 months devel/bazaar|devel/baz|2012-06-17|Project renamed devel/bazaar-ng|devel/bzr|2012-06-17|Project renamed ftp/IglooFTP||2012-06-18|Has expired: No longer supported audio/libtunepimp||2012-06-20|MusicBrainz RDF webservice no longer functions audio/libtunepimp-old||2012-06-20|MusicBrainz RDF webservice no longer functions sysutils/xfce4-utils||2012-06-23|No longer relevant, see UPDATING devel/py-sendfile|net/py-pysendfile|2012-06-24|Domain lapsed, forked www/joomla||2012-06-25|Unmaintained upstream, please use www/joomla25 instead graphics/p5-chart|graphics/p5-Chart|2012-06-30|Move to a better place via repocopy textproc/libupskirt|textproc/libsoldout|2012-07-01|Move to respect upstream new name net-p2p/libtorrent-rasterbar-14||2012-07-01|Discontinued upstream, move to libtorrent-rasterbar-16 net-p2p/hrktorrent||2012-07-01|Relies on net-p2p/libtorrent-rasterbar-14, which has been discontinued net-p2p/sharktorrent||2012-07-01|Relies on net-p2p/libtorrent-rasterbar-14, which has been discontinued databases/postgresql-libpqxx30|databases/postgresql-libpqxx3|2012-07-03|Port renamed to be updated to 3.1 mail/mew2|mail/mew|2012-07-06|Development of this versions ceased, superseded by mail/mew mail/mew3|mail/mew|2012-07-06|Development of this versions ceased, superseded by mail/mew sysutils/devcpu||2012-07-06|Already included in base system mail/squirreloutlook||2012-07-06|Based on a vulnerable version of squirrelmail, use mail/squirrelmail for similar functionality x11-wm/e17-module-itask-ng|x11-wm/e17-module-engage|2012-07-06|Project has been renamed sysutils/rubygem-puppet-module||2012-07-07|Integrated in to sysutils/puppet since 2.7.14 mail/sympa5|mail/sympa|2012-07-07|Has expired: Unsupported upstream, multiple vulnerabilities have been discovered in Sympa archive management that allow to skip the scenario-based authorization mechanisms (http://www.sympa.org/security_advisories) science/ics||2012-07-07|ICS is no more a part of Code_Saturne mail/postfix25||2012-07-07|Has expired: no further upstream development; please consider upgrading misc/alevt||2012-07-16|Has expired: No more upstream multimedia/moonlight||2012-07-16|Has expired: Broken for more than 6 months lang/python24||2012-07-16|End Of Life reached lang/python25||2012-07-16|End Of Life reached www/zope||2012-07-16|End Of Life reached www/zope211||2012-07-16|End Of Life reached archivers/zlib||2012-07-18|Removed in favor of base system zlib devel/app|devel/papp|2012-07-18|Project renamed upstream databases/redis-scripting|databases/redis-devel|2012-07-19|Removed, please use databases/redis-devel instead devel/acpicatools||2012-07-22|Has expired: obsolete and already in the base system for a long time mail/mutt-devel|mail/mutt|2012-07-22|mail/mutt-devel is ready for prime time mail/mutt-devel-lite|mail/mutt-lite|2012-07-22|mail/mutt-devel is ready for prime time deskutils/phpgroupware|www/phpgroupware|2012-07-23|Moved to proper category textproc/fcitx-keyboard||2012-07-25|Removed, merged into chinese/fcitx devel/pkg-config|devel/pkgconf|2012-07-26|pkg-config has been replaced by pkgconf print/pdfmerge||2012-07-27|Removed audio/etoile-melodie||2012-07-28|Has expired: API no longer supported audio/etoile-volumecontrolmenulet||2012-07-28|Has expired: API no longer supported deskutils/etoile-corner||2012-07-28|Has expired: API no longer supported deskutils/etoile-dictionaryreader||2012-07-28|Has expired: API no longer supported deskutils/etoile-distributedview||2012-07-28|Has expired: API no longer supported deskutils/etoile-extendedworkspacekit||2012-07-28|Has expired: API no longer supported deskutils/etoile-hardware||2012-07-28|Has expired: API no longer supported deskutils/etoile-inspectorkit||2012-07-28|Has expired: API no longer supported deskutils/etoile-lookandbehavior||2012-07-28|Has expired: API no longer supported deskutils/etoile-menuserver||2012-07-28|Has expired: API no longer supported deskutils/etoile-panekit||2012-07-28|Has expired: API no longer supported deskutils/etoile-scriptservices||2012-07-28|Has expired: API no longer supported deskutils/etoile-servicemenulet||2012-07-28|Has expired: API no longer supported deskutils/etoile-servicesbarkit||2012-07-28|Has expired: API no longer supported deskutils/etoile-systemconfig||2012-07-28|Has expired: API no longer supported deskutils/etoile-trackerkit||2012-07-28|Has expired: API no longer supported deskutils/etoile-ui||2012-07-28|Has expired: API no longer supported devel/etoile-collectionkit||2012-07-28|Has expired: API no longer supported devel/etoile-coreobject||2012-07-28|Has expired: API no longer supported devel/etoile-foundation||2012-07-28|Has expired: API no longer supported devel/etoile-serialize||2012-07-28|Has expired: API no longer supported devel/etoile-unitkit||2012-07-28|Has expired: API no longer supported devel/llvm-etoile||2012-07-28|Has expired: API no longer supported editors/etoile-typewriter||2012-07-28|Has expired: API no longer supported graphics/popplerkit||2012-07-28|Has expired: API no longer supported graphics/vindaloo||2012-07-28|Has expired: API no longer supported lang/etoile-compiler||2012-07-28|Has expired: API no longer supported lang/etoile-io||2012-07-28|Has expired: API no longer supported lang/etoile-languagekit||2012-07-28|Has expired: API no longer supported lang/etoile-lkplugins||2012-07-28|Has expired: API no longer supported lang/etoile-scriptkit||2012-07-28|Has expired: API no longer supported lang/etoile-smalltalkkit||2012-07-28|Has expired: API no longer supported multimedia/etoile-babbler||2012-07-28|Has expired: API no longer supported multimedia/etoile-mediakit||2012-07-28|Has expired: API no longer supported multimedia/etoile-multimediakit||2012-07-28|Has expired: API no longer supported net-im/etoile-stepchat||2012-07-28|Has expired: API no longer supported net-im/etoile-xmppkit||2012-07-28|Has expired: API no longer supported sysutils/etoile-behavior||2012-07-28|Has expired: API no longer supported sysutils/etoile-installer||2012-07-28|Has expired: API no longer supported sysutils/etoile-powermenulet||2012-07-28|Has expired: API no longer supported sysutils/etoile-system||2012-07-28|Has expired: API no longer supported textproc/etoile-lucenekit||2012-07-28|Has expired: API no longer supported textproc/etoile-ogrekit||2012-07-28|Has expired: API no longer supported textproc/etoile-opmlkit||2012-07-28|Has expired: API no longer supported www/etoile-bookmarkkit||2012-07-28|Has expired: API no longer supported www/etoile-mollusk||2012-07-28|Has expired: API no longer supported x11-fm/etoile-fontmanager||2012-07-28|Has expired: API no longer supported x11-themes/etoile-azbackground||2012-07-28|Has expired: API no longer supported x11-themes/etoile-camaelon||2012-07-28|Has expired: API no longer supported x11-themes/etoile-etoilemenus||2012-07-28|Has expired: API no longer supported x11-themes/etoile-iconkit||2012-07-28|Has expired: API no longer supported x11-themes/etoile-wildmenus||2012-07-28|Has expired: API no longer supported x11-wm/etoile-azalea||2012-07-28|Has expired: API no longer supported x11-wm/etoile-azdock||2012-07-28|Has expired: API no longer supported x11-wm/etoile-azswitch||2012-07-28|Has expired: API no longer supported x11-wm/etoile-login||2012-07-28|Has expired: API no longer supported x11/etoile||2012-07-28|Has expired: Update to a new release is required x11/etoile-idle||2012-07-28|Has expired: API no longer supported x11/etoile-iterm||2012-07-28|Has expired: API no longer supported x11/etoile-xwindowserverkit||2012-07-28|Has expired: API no longer supported lang/steptalk||2012-07-29|Has expired: API no longer supported editors/emacs.app||2012-07-29|Has expired: API no longer supported devel/ruby-gnustep||2012-07-29|Has expired: API no longer supported www/etoile-rsskit|www/rsskit|2012-08-04|Project renamed www/etoile-grr|www/grr|2012-08-04|Project renamed graphics/libglut|graphics/freeglut|2012-08-04|Replace libglut with freeglut x11-fm/FSViewer||2012-08-05|Broken, unmaintained, dead upstream games/gomoku.app|games/gomoku|2012-08-06|Project renamed devel/projectcenter.app|devel/projectcenter|2012-08-06|Project renamed audio/volumecontrol.app|audio/volumecontrol|2012-08-06|Project renamed editors/textedit.app|editors/textedit|2012-08-07|Project renamed deskutils/preferences.app|deskutils/preferences|2012-08-07|Project renamed www/trac-ctxtnavadd||2012-08-09|Functionality of this plugin merged into Trac itself - see trac.web.chrome.add_ctxtnav function net-p2p/qbittorrent-29|net-p2p/qbittorrent|2012-08-11|Moved to match port name net-p2p/qbittorrent-29-nox11|net-p2p/qbittorrent-nox11|2012-08-11|Moved to match port name sysutils/cfengine-legacy|sysutils/cfengine32|2012-08-14|Standardize port naming sysutils/cfengine3|sysutils/cfengine33|2012-08-14|Standardize port naming lang/erlang-lite|lang/erlang|2012-08-15|Redundant port removed devel/apr0|devel/apr1|2012-08-18|Has expired www/apache20|www/apache22|2012-08-18|Has expired www/django-mezzanine-filebrowser|www/py-django-mezzanine-filebrowser|2012-08-19|Rename to consistency with other Python ports www/django-mezzanine-grappelli|www/py-django-mezzanine-grappelli|2012-08-19|Rename to consistency with other Python ports misc/gpt31||2012-08-20|Has expired: was a dependency for net/globus4, which was removed 2008-12-07, unmaintained upstream since 2004 misc/gpt||2012-08-20|Has expired: was a dependency for net/globus4, which was removed 2008-12-07, unmaintained upstream since 2004 www/xxxterm|www/xombrero|2012-08-20|Project renamed www/cakephp2|www/cakephp21|2012-08-21|Moved to match port version databases/libudbc||2012-08-21|Has expired: Does not fetch and no vendor support anymore net/asterisk16||2012-08-22|Unsupported upstream, please use net/asterisk instead net/asterisk16-addons||2012-08-22|Unsupported upstream, now part of net/asterisk databases/edb||2012-08-26|Has expired: Deprecated by enlightenment.org team databases/php5-rrdtool||2012-08-26|Has expired: deprecated via upstream please use databases/pecl-rrd graphics/evas-engine-xrender||2012-08-26|Has expired: Deprecated by enlightenment.org graphics/evas-loader-edb||2012-08-26|Has expired: Deprecated by enlightenment.org www/linux-f10-flashplugin10|www/linux-f10-flashplugin11|2012-08-26|Has expired: has vulnerabilities and is EOL x11-wm/e17-module-efm_nav||2012-08-26|Has expired: Deprecated by enlightenment.org x11-wm/e17-module-efm_path||2012-08-26|Has expired: Deprecated by enlightenment.org x11-wm/e17-module-efm_pathbar||2012-08-26|Has expired: Deprecated by enlightenment.org x11-wm/e17-module-notification||2012-08-26|Has expired: Merged into x11-wm/enlightenment www/py-django12||2012-08-31|Has expired: Unsupported version www/p5-Xango||2012-08-31|Has expired: Removed from CPAN lang/spidermonkey|lang/spidermonkey17|2012-09-01|Moved to allow for addition of the 1.8 development line cad/gtkwave3|cad/gtkwave|2012-09-04|There is only one version of this now multimedia/x264-devel||2012-09-07|Has expired: x264 github development makes this port obsolete audio/holyshout||2012-09-07|Has expired: upstream has disappeared devel/R-cran-survival||2012-09-12|Part of R japanese/postgresql73-man||2012-09-13|There no according PostgreSQL version in the tree anymore japanese/postgresql74-man||2012-09-13|There no according PostgreSQL version in the tree anymore japanese/postgresql80-man||2012-09-13|There no according PostgreSQL version in the tree anymore japanese/postgresql81-man||2012-09-13|There no according PostgreSQL version in the tree anymore audio/libmusicbrainz||2012-09-18|Has expired: MusicBrainz RDF webservice no longer functions net-mgmt/better-cacti-templates|net-mgmt/percona-monitoring-plugins|2012-09-19|Project renamed print/pips3300||2012-09-22|Removed print/pips-spr200_210||2012-09-22|Removed print/pipsv600||2012-09-22|Removed print/pips-spr800||2012-09-22|Removed print/pips-sc85_86s||2012-09-22|Removed print/pips2200||2012-09-22|Removed print/pips880||2012-09-22|Removed print/pips940||2012-09-22|Removed print/pips730||2012-09-22|Removed print/pips900||2012-09-22|Removed print/pips820||2012-09-22|Removed print/pips740||2012-09-22|Removed print/pipsg700||2012-09-22|Removed print/pipsv700-cups||2012-09-22|Removed print/pipsg900||2012-09-22|Removed print/pips-sp2100_2200||2012-09-22|Removed print/pips4000||2012-09-22|Removed print/pips980||2012-09-22|Removed print/pips740-cups||2012-09-22|Removed print/pips970-cups||2012-09-22|Removed print/pipsv500||2012-09-22|Removed print/pips-scx3500_3600s||2012-09-22|Removed print/pips-sc65_66s||2012-09-22|Removed print/pips970||2012-09-22|Removed print/pips750_2000||2012-09-22|Removed print/pips780||2012-09-22|Removed print/pips-sc84_83s||2012-09-22|Removed print/pipsv700||2012-09-22|Removed print/pips800||2012-09-22|Removed print/pips-sc60s||2012-09-22|Removed print/pips3500||2012-09-22|Removed print/pips3000||2012-09-22|Removed print/pips870||2012-09-22|Removed print/pips670||2012-09-22|Removed print/pips760||2012-09-22|Removed print/pips-sc80s||2012-09-22|Removed print/pipsg800||2012-09-22|Removed print/pips870-cups||2012-09-22|Removed print/pips-spr300_310||2012-09-22|Removed print/pips930||2012-09-22|Removed print/pips770||2012-09-22|Removed www/linuxpluginwrapper||2012-09-22|Has expired: doesn't support ELF symbol versioning, yet net/fping+ipv6|net/fping|2012-09-24|IPv6 support has been merged textproc/aspell-without-dicten|textproc/aspell|2012-09-24|The dictionary is no longer installed with textproc/aspell www/jakarta-jmeter|www/jmeter|2012-09-25|Former Jakarta projects now live on their own www/smarty|www/smarty2|2012-09-26|Renamed to prepare for addition of Smarty 3.x to the tree devel/p5-Devel-Mallinfo||2012-10-08|Has expired: Does not work on FreeBSD, mallinfo() is a GNU libc function and is not available on FreeBSD multimedia/vdpau-video|multimedia/libva-vdpau-driver|2012-10-09|Project renamed mail/enigmail||2012-10-10|Enigmail is now an option in the thunderbird/seamonkey port mail/enigmail-seamonkey||2012-10-10|Enigmail is now an option in the seamonkey port mail/enigmail-thunderbird||2012-10-10|Enigmail is now an option in the thunderbird port mail/enigmail-thunderbird-esr||2012-10-10|Enigmail is now an option in the thunderbird-esr port sysutils/binup||2012-10-14|Upstream disappeared, use freebsd-update(8) instead math/guppi||2012-10-15|Not developed anymore, consider math/gnumeric instead x11-toolkits/gal||2012-10-15|Development ceased, nothing in the ports tree uses it anymore math/octave-forge-physicalconstants||2012-10-15|Incorporated upstream into math/octave-forge-miscellaneous math/octave-forge-combinatorics||2012-10-15|Incorporated upstream into math/octave-forge-miscellaneous games/8kingdoms||2012-10-16|Has expired: Broken for more than 6 months games/rigsofrods||2012-10-16|Has expired: Broken for more than 6 months sysutils/bacula2-client||2012-10-20|No longer supported upstream and may contain vulnerabilities. Use sysutils/bacula-client instead sysutils/bacula2-server||2012-10-20|No longer supported upstream and may contain vulnerabilities. Use sysutils/bacula-server instead x11-wm/wmcp||2012-10-25|Has expired: No more public distfiles x11-wm/skippy-xd||2012-10-25|Has expired: Abandonware, upstream disappeared x11-wm/skippy||2012-10-25|Has expired: Abandonware, upstream disappeared x11-wm/matchbox||2012-10-25|Has expired: Abandonware, upstream disappeared x11-wm/blwm||2012-10-25|Has expired: Abandonware, upstream disappeared x11-wm/badwm||2012-10-25|Has expired: Development ceased x11-wm/amaterus||2012-10-25|Has expired: Abandonware, upstream disappeared x11-wm/ahwm||2012-10-25|Has expired: Abandoned upstream x11-toolkits/py-SciParam||2012-10-25|Has expired: Depends on the deprecated wx 2.4 x11-toolkits/p5-GdkImlib||2012-10-25|Has expired: Abandoned upstream, not used by any ports x11-toolkits/mesgui||2012-10-25|Has expired: Abandoned upstream, no ports depend on it x11-toolkits/gtkmm12||2012-10-25|Has expired: Abandoned upstream, no more depending ports x11-toolkits/flu||2012-10-25|Has expired: No more public distfiles x11-toolkits/efltk||2012-10-25|Has expired: Abandoned upstream, no ports depend on it x11-toolkits/9libs||2012-10-25|Has expired: Abandonware, no ports depend on it, and broken on most arches x11-themes/metacity-ana-theme||2012-10-25|Has expired: No more public distfiles x11-themes/gtk-ana-theme||2012-10-25|Has expired: No more public distfiles x11-fonts/getbdf||2012-10-25|Has expired: No more public distfiles x11-fonts/arkpandora||2012-10-25|Has expired: No more public distfiles x11-clocks/wmdate||2012-10-25|Has expired: No more public distfiles x11/multi-gnome-terminal||2012-10-25|Has expired: depends on deprecated gnome1 things www/wacko||2012-10-25|Has expired: No more public distfiles sysutils/wtmp-tools||2012-10-25|Has expired: No more public distfiles sysutils/pdumpfs-rsync||2012-10-25|Has expired: No more public distfiles sysutils/pdumpfs-clean||2012-10-25|Has expired: No more public distfiles sysutils/netdump-server||2012-10-25|Has expired: No more public distfiles sysutils/nctop||2012-10-25|Has expired: No more public distfiles sysutils/memgrep||2012-10-25|Has expired: No more public distfiles sysutils/logserial||2012-10-25|Has expired: No more public distfiles sysutils/dupfind||2012-10-25|Has expired: No more public distfiles sysutils/dump9660||2012-10-25|Has expired: No more public distfiles sysutils/desktopbsd-tools||2012-10-25|Has expired: No more public distfiles sysutils/agef||2012-10-25|Has expired: No more public distfiles security/sscep||2012-10-25|Has expired: No more public distfiles security/py-rijndael||2012-10-25|Has expired: No more public distfiles security/pam_af||2012-10-25|Has expired: No more public distfiles security/its4||2012-10-25|Has expired: No more public distfiles russian/xcyrBGR||2012-10-25|Has expired: No more public distfiles russian/wmcyrx||2012-10-25|Has expired: No more public distfiles print/advi||2012-10-25|Has expired: No more public distfiles palm/plucker||2012-10-25|Has expired: No more public distfiles net-p2p/py-bittornado-core||2012-10-25|Has expired: Depends on the deprecated wx 2.4 net-p2p/py-bittornado||2012-10-25|Has expired: Depends on the deprecated wx 2.4 net-mgmt/nagios-radauth-plugin||2012-10-25|Has expired: No more public distfiles net-mgmt/nagios-check_nick||2012-10-25|Has expired: No more public distfiles net-im/grouch||2012-10-25|Has expired: No more public distfiles net-im/firetalk||2012-10-25|Has expired: No more public distfiles net/linneighborhood||2012-10-25|Has expired: No more public distfiles net/libconnect||2012-10-25|Has expired: No more public distfiles multimedia/vcdtools||2012-10-25|Has expired: No more public distfiles multimedia/mpeg||2012-10-25|Has expired: No more public distfiles multimedia/gnustep-mplayer||2012-10-25|Has expired: No more public distfiles misc/voltcraft304||2012-10-25|Has expired: No more public distfiles misc/thailocale||2012-10-25|Has expired: No more public distfiles misc/flyway||2012-10-25|Has expired: No more public distfiles mail/zabit||2012-10-25|Has expired: No more public distfiles mail/wbl||2012-10-25|Has expired: No more public distfiles mail/smtpd||2012-10-25|Has expired: No more public distfiles lang/cu-prolog||2012-10-25|Has expired: No more public distfiles japanese/stardict-dict-ja||2012-10-25|Has expired: No more public distfiles japanese/otojiro-fpw||2012-10-25|Has expired: No more public distfiles japanese/hex||2012-10-25|Has expired: No more public distfiles japanese/gxditview||2012-10-25|Has expired: No more public distfiles graphics/view3ds||2012-10-25|Has expired: No more public distfiles graphics/photoclip||2012-10-25|Has expired: No more public distfiles graphics/multivideo||2012-10-25|Has expired: Abandonware, no more upstream, depends on the deprecated wxGTK 2.4 graphics/jpegpixi||2012-10-25|Has expired: No more public distfiles graphics/gimp-manual-pdf||2012-10-25|Has expired: No more public distfiles games/yace||2012-10-25|Has expired: No more public distfiles games/xripple||2012-10-25|Has expired: No more public distfiles games/wolf3d||2012-10-25|Has expired: No more public distfiles games/pets||2012-10-25|Has expired: No more public distfiles games/linux-enemyterritory-fortress||2012-10-25|Has expired: No more public distfiles games/linux-enemyterritory-etpub||2012-10-25|Has expired: No more public distfiles (for the .pk3) games/freesci||2012-10-25|Has expired: No more public distfiles dns/gresolver||2012-10-25|Has expired: No more public distfiles devel/vb2c||2012-10-25|Has expired: No more public distfiles devel/libsigc++||2012-10-25|Has expired: Abandoned upstream, no more depending ports devel/klassmodeler||2012-10-25|Has expired: Abandonware, depends on the deprecated wxGTK 2.4 devel/ecos-tools||2012-10-25|Has expired: Depends on an obsolete version of wx, broken with gcc4.2 for long devel/datadesigner||2012-10-25|Has expired: Abandonware, depends on the deprecated wxGTK 2.4 chinese/wangttf||2012-10-25|Has expired: No more public distfiles chinese/stardict-dict-zh_TW||2012-10-25|Has expired: No more public distfiles chinese/stardict-dict-zh_CN||2012-10-25|Has expired: No more public distfiles chinese/mingunittf||2012-10-25|Has expired: No more public distfiles chinese/dfsongsd||2012-10-25|Has expired: No more public distfiles biology/dna-qc||2012-10-25|Has expired: No more public distfiles x11-toolkits/wxgtk24||2012-10-26|Not supported upstream anymore, consider using more recent version x11-toolkits/wxgtk24-contrib||2012-10-26|Not supported upstream anymore, consider using more recent version x11-toolkits/wxgtk24-docs||2012-10-26|Not supported upstream anymore, consider using more recent version x11-toolkits/py-wxPython24||2012-10-26|Not supported upstream anymore, consider using more recent version audio/gogo||2012-10-26|No more public distfiles deskutils/superkaramba-lwp||2012-10-26|Has expired: No more public_distfiles x11-toolkits/paragui||2012-10-26|Has expired: No more upstream, no ports depending on it deskutils/gnuwash||2012-10-26|Has expired: No more public distfiles devel/p5-Class-MOP||2012-10-27|Has expired: distribution has been merged with devel/p5-Moose x11-toolkits/ocaml-lablgtk||2012-10-27|Has expired: Abandoned upstream, consider using x11-toolkit/ocaml-lablgtk2 audio/xmms-arts_output||2012-10-28|Has expired: Outdated and distfile no longer available databases/pear-MDB2_Driver_ibase||2012-10-28|Has expired: Broken for more than 6 months textproc/xerces-c||2012-11-05|Has expired: No more supported upstream, consider using xerces-c2 or xerces-c3 x11-wm/wampager||2012-11-05|Has expired: Development ceased x11-wm/waimea||2012-11-05|Has expired: Development ceased x11-wm/waimea-devel||2012-11-05|Has expired: Development ceased devel/py-liblarch_gtk||2012-11-09|Merged into devel/py-liblarch x11-fonts/tolkien-ttf||2012-11-11|Has expired: Does not fetch: there are no more public distfiles www/mod_jk-apache2|www/mod_jk|2012-11-14|Apache 1.3 is no longer in the tree net-im/qutim-plugin-icq||2012-11-19|Has expired: It is not needed for new QutIM net-im/qutim-plugin-jabber||2012-11-19|Has expired: It is not needed for new QutIM www/trac-customroadmap||2012-11-19|Has expired: Functionality of this plugin is available in the Trac core as of 0.11 net-mgmt/py-snmp2||2012-11-19|Has expired: Dead upstream, use net-mgmt/py-snmp4 instead net-im/ccmsn||2012-11-19|Has expired: The project no longer exists irc/py-irclib|irc/py-irc|2012-11-22|Rename according to upstream name change editors/glimmer||2012-11-28|Has expired: Depends on the expired gtkglarea through py-gtk palm/txt2pdbdoc||2012-11-28|Has expired: No more public distfiles sysutils/xloadface||2012-11-28|Has expired: No more public distfiles shells/gscommander||2012-11-28|Has expired: Abandonware security/saferpay||2012-11-28|Has expired: No more public distfiles x11-wm/qvwm||2012-11-28|Has expired: No more public distfiles astro/position||2012-11-28|Has expired: No more public distfiles astro/tangogps||2012-11-28|Has expired: No more public distfiles audio/volumecontrol||2012-11-28|Has expired: No more public distfiles audio/wsoundprefs||2012-11-28|Has expired: Depends on the deprecated audio/wsoundserver and expired x11-toolkits/libdockapp audio/wsoundserver||2012-11-28|Has expired: Depends on deprecated libdockapp benchmarks/gsbench||2012-11-28|Has expired: No more public distfiles benchmarks/xengine||2012-11-28|Has expired: No more public distfiles biology/belvu||2012-11-28|Has expired: No more public distfiles multimedia/kaffeine-mozilla||2012-11-28|Has expired: No more public distfiles www/gnustep-ticker||2012-11-28|Has expired: Abandonware net/tryst-examples||2012-11-28|Has expired: Abandonware net/tryst||2012-11-28|Has expired: Abandonware graphics/morpheus||2012-11-28|Has expired: Depends on the expired gtkglarea devel/jakarta-commons-chain||2012-11-28|Has expired: Depends on the expired devel/portlet-api math/p5-Math-LinearCombination||2012-11-28|Has expired: Depends on the expired p5-Class-Field x11/padkey||2012-11-28|Has expired: No more public distfiles japanese/gicq||2012-11-28|Has expired: No more public distfiles and development ceased www/momspider||2012-11-28|Has expired: No more public distfiles japanese/perl5||2012-11-28|Has expired: Recent perl supports correctly japanese, consider using them sysutils/fuser||2012-11-28|Has expired: No more public distfiles textproc/ascii2pdf||2012-11-28|Has expired: No more public distfiles textproc/lemmatizer||2012-11-28|Has expired: No more public distfiles net/relay||2012-11-28|Has expired: No more public distfiles x11-clocks/bmp-alarm||2012-11-28|Has expired: No more public distfiles net-mgmt/nagios-check_ice||2012-11-28|Has expired: No more public distfiles japanese/libicq||2012-11-28|Has expired: No more public distfiles and development ceased graphics/tonicpoint-viewer||2012-11-28|Has expired: No more public distfiles devel/safestr||2012-11-28|Has expired: No more public distfiles java/jmp||2012-11-28|Has expired: Java 1.5 is EOLed irc/tr-ircd||2012-11-28|Has expired: No more public distfiles lang/imp-interpreter||2012-11-28|Has expired: No more public distfiles games/xquarto||2012-11-28|Has expired: No more public distfiles games/six||2012-11-28|Has expired: No more public distfiles finance/gfp||2012-11-28|Has expired: No more public distfiles games/44bsd-hunt||2012-11-28|Has expired: No more public distfiles graphics/ale||2012-11-28|Has expired: No more public distfiles german/digibux||2012-11-28|Has expired: No more public distfiles java/eclipse-clay-core||2012-11-28|Has expired: No more public distfiles games/xbloody||2012-11-28|Has expired: No more public distfiles dns/sqldjbdns||2012-11-28|Has expired: No more public distfiles ftp/mget||2012-11-28|Has expired: No more public distfiles graphics/yap||2012-11-28|Has expired: No more public distfiles games/demonquake||2012-11-28|Has expired: No more public distfiles databases/php-sqlrelay||2012-11-28|Has expired: No more public distfiles devel/fastdep||2012-11-28|Has expired: No more public distfiles graphics/svgviewer||2012-11-28|Has expired: No more public distfiles comms/garmin-utils||2012-11-28|Has expired: No more public distfiles comms/snooper||2012-11-28|Has expired: No more public distfiles graphics/xfig-devel|graphics/xfig|2012-11-28|Has expired: Stable version is more recent than devel version irc/irchat-jp||2012-11-28|Has expired: No more public distfiles games/xcogitate||2012-11-28|Has expired: No more public distfiles emulators/gcube||2012-11-28|Has expired: No more public distfiles games/stepbill||2012-11-28|Has expired: No more public distfiles deskutils/ktagebuch||2012-11-28|Has expired: No more public distfiles games/jetpack||2012-11-28|Has expired: No more public distfiles games/tremor||2012-11-28|Has expired: No more public distfiles graphics/jpeg2pdf||2012-11-28|Has expired: No more public distfiles java/westhawksnmp||2012-11-28|Has expired: No more public distfiles japanese/tcl76||2012-11-28|Has expired: No more public distfiles math/stepulator||2012-11-28|Has expired: No more public distfiles editors/jedit-devel|editors/jedit|2012-11-28|Has expired: Stable version is more recent than devel www/trac-wikirename||2012-11-28|Has expired: Functionality of this plugin is included in the Trac core since 0.12 www/p5-Sledge||2012-11-28|Has expired: depends on mod_perl 1 which is gone www/p5-Sledge-Plugin-CacheContent||2012-11-28|Has expired: depends on mod_perl 1 which is gone www/p5-Sledge-Plugin-Download||2012-11-28|Has expired: depends on mod_perl 1 which is gone www/p5-Sledge-Plugin-Dumper||2012-11-28|Has expired: depends on mod_perl 1 which is gone www/p5-Sledge-Plugin-HTML2HDML||2012-11-28|Has expired: depends on mod_perl 1 which is gone www/p5-Sledge-Plugin-Log||2012-11-28|Has expired: depends on mod_perl 1 which is gone www/p5-Sledge-Plugin-NoCache||2012-11-28|Has expired: depends on mod_perl 1 which is gone www/p5-Sledge-Plugin-SaveUpload||2012-11-28|Has expired: depends on mod_perl 1 which is gone www/p5-Sledge-Plugin-ScratchPad||2012-11-28|Has expired: depends on mod_perl 1 which is gone www/p5-Sledge-Plugin-SessionAutoCleanup||2012-11-28|Has expired: depends on mod_perl 1 which is gone www/p5-Sledge-Plugin-XSLT||2012-11-28|Has expired: depends on mod_perl 1 which is gone www/p5-Sledge-SessionManager-CookieStore||2012-11-28|Removed depends on mod_perl 1 which is gone www/p5-Sledge-Template-Expr||2012-11-28|Removed depends on mod_perl 1 which is gone mail/vchkuser|mail/qmail-spamcontrol|2012-11-28|Has expired: mail/qmail-spamcontrol replaces this port chinese/pyDict||2012-11-28|Removed: Depends on the expired gtkglarea through py-gtk x11-toolkits/py-gtk||2012-11-28|Has expired: Depends on the expired gtkglarea devel/portlet-api||2012-11-28|Has expired: No more public distfiles net/amqp08||2012-11-29|Has expired: No more public distfiles games/kmquake2||2012-11-29|Has expired: No more public distfiles www/jetspeed||2012-11-30|Has expired: Dead upstream deskutils/abacus||2012-12-03|Has expired: Dead upstream lang/tcl82||2012-12-03|No longer developed, no more consumers x11-toolkits/tk82||2012-12-03|No longer developed, no more consumers astro/prune|astro/gpsprune|2012-12-03|Project was renamed net-p2p/limewire||2012-12-07|Has expired: Abandoned up stream java/diablo-jre16|java/openjdk6-jre|2012-12-10|Has expired: Outdated, consider using openjdk6 or openjdk7 java/diablo-jdk16|java/openjdk6|2012-12-10|Has expired: Outdated, consider using openjdk6 or openjdk7 java/diablo-jre15|java/openjdk6-jre|2012-12-10|Has expired: Outdated, consider using openjdk6 or openjdk7 java/diablo-jdk15|java/openjdk6|2012-12-10|Has expired: Outdated, consider using openjdk6 or openjdk7 java/jdk15|java/openjdk6|2012-12-10|Has expired: EOLed upstream since October 2009 java/jdk16|java/openjdk6|2012-12-10|Has expired: Outdated, consider using openjdk6 or openjdk7 java/linux-sun-jre15|java/linux-sun-jre16|2012-12-10|Has expired: EOLed upstream since October 2009 java/linux-sun-jdk15|java/linux-sun-jdk16|2012-12-10|Has expired: EOLed upstream since October 2009 java/jdk15-doc|java/jdk16-doc|2012-12-10|Has expired: EOLed upstream since October 2009 science/py-openbabel||2012-12-11|Merged to science/openbabel www/moodle2|www/moodle23|2012-12-11|Renamed deskutils/horde-hermes|deskutils/horde3-hermes|2012-12-12|Rename of old horde apps deskutils/horde-klutz|deskutils/horde3-klutz|2012-12-12|Rename of old horde apps devel/horde-chora|devel/horde3-chora|2012-12-12|Rename of old horde apps mail/horde-dimp|mail/horde3-dimp|2012-12-12|Rename of old horde apps mail/horde-forwards|mail/horde3-forwards|2012-12-12|Rename of old horde apps mail/horde-mimp|mail/horde3-mimp|2012-12-12|Rename of old horde apps mail/horde-vacation|mail/horde3-vacation|2012-12-12|Rename of old horde apps net-mgmt/horde-nic|net-mgmt/horde3-nic|2012-12-12|Rename of old horde apps security/horde-jeta|security/horde3-jeta|2012-12-12|Rename of old horde apps www/horde-meta|www/horde3-meta|2012-12-12|Rename of old horde apps x11-toolkits/fltk-threads|x11-toolkits/fltk|2012-12-12|Threads are on by default x11-fonts/gentium|x11-fonts/gentium-plus|2012-12-15|Track upstream name changes devel/pear-Horde_DataTree||2012-12-16|Obsolete in horde5 deskutils/doodle||2012-12-17|Has expired: Broken for more than 6 months www/horde4-ansel|www/horde-ansel|2012-12-18|Move horde4-* apps to horde-* www/horde4-base|www/horde-base|2012-12-18|Move horde4-* apps to horde-* www/horde4-passwd|www/horde-passwd|2012-12-18|Move horde4-* apps to horde-* www/horde4-wicked|www/horde-wicked|2012-12-18|Move horde4-* apps to horde-* deskutils/horde4-groupware|deskutils/horde-groupware|2012-12-18|Move horde4-* apps to horde-* deskutils/horde4-kronolith|deskutils/horde-kronolith|2012-12-18|Move horde4-* apps to horde-* deskutils/horde4-mnemo|deskutils/horde-mnemo|2012-12-18|Move horde4-* apps to horde-* deskutils/horde4-nag|deskutils/horde-nag|2012-12-18|Move horde4-* apps to horde-* devel/horde4-content|devel/horde-content|2012-12-18|Move horde4-* apps to horde-* devel/horde4-timeobjects|devel/horde-timeobjects|2012-12-18|Move horde4-* apps to horde-* devel/horde4-whups|devel/horde-whups|2012-12-18|Move horde4-* apps to horde-* ftp/horde4-gollem|ftp/horde-gollem|2012-12-18|Move horde4-* apps to horde-* mail/horde4-imp|mail/horde-imp|2012-12-18|Move horde4-* apps to horde-* mail/horde4-ingo|mail/horde-ingo|2012-12-18|Move horde4-* apps to horde-* mail/horde4-turba|mail/horde-turba|2012-12-18|Move horde4-* apps to horde-* mail/horde4-webmail|mail/horde-webmail|2012-12-18|Move horde4-* apps to horde-* textproc/hs-xml2html||2012-12-20|Removed: this package is obsolete sysutils/makefs||2012-12-21|Has expired: Part of base in an earlier version for every supported FreeBSD version textproc/docproj-jadetex|textproc/docproj|2013-01-03|Moved: Replace by textproc/docproj ports-mgmt/portmanager||2013-01-06|Has expired: Does not support modern ports features such as MOVED, is lacking upstream and active contributions, and does not support pkgng. Consider using ports-mgmt/portmaster, ports-mgmt/portupgrade or pkgng net-im/openfetion||2013-01-06|Has expired: Abandoned upstream textproc/libpathan||2013-01-06|Has expired: Does not build and upstream has discontinued the project and advises that it has been replaced by textproc/xqilla java/sun-wtk||2013-01-06|Has expired: no more public distfiles, merged with Java ME SDK 3.0 upstream databases/hypertable||2013-01-06|Has expired: Broken for more than 6 months graphics/autopano-sift||2013-01-06|Has expired: Disappeared from vendor site. No longer required by graphics/hugin misc/airoflash||2013-01-06|Has expired: Broken for more than 6 months x11-themes/kde-icons-krystaline||2013-01-06|Has expired: Broken for more than 6 months x11-themes/kde-icons-amaranth||2013-01-06|Has expired: Broken for more than 6 months x11-themes/kde-icons-realistic||2013-01-06|Has expired: Broken for more than 6 months x11/Terminal|x11/xfce4-terminal|2013-01-06|Project was renamed sysutils/syslog-ng-rc|sysutils/syslog-ng-devel|2013-01-08|No longer used by our upline, use syslog-ng-devel instead www/openbravoerp||2013-01-12|Has expired: incompatible with ant for building devel/lbpp||2013-01-13|Has expired: Dead upstream since 2001 devel/titano||2013-01-13|Has expired: Dead upstream since 2001 games/py-anki|games/anki|2013-01-16|Project was merged mail/claws-mail-synce||2013-01-16|Has expired: No longer supported by Claws Mail team databases/postgresql-plpython|databases/postgresql90-plpython|2013-01-20|This port was split out to several versioned ports net-mgmt/nfdump-devel||2013-01-22|Has expired: use nfdump instead devel/p4v||2013-01-22|No longer publishes FreeBSD version multimedia/libdvdplay||2013-01-27|Has expired: No more public_distfiles www/p5-Bundle-Sledge||2013-01-27|Removed databases/ruby-kyotocabinet||2013-01-27|Has expired: Broken for more than 6 months x11-themes/kde-icons-amaranth-althaea||2013-01-27|Has expired: Broken for more than 6 months net/bpfstat||2013-01-27|Has expired: Merge in netstat on all supported version of FreeBSD x11-toolkits/fltk11||2013-01-27|Has expired: new code should use /x11-toolkits/fltk sysutils/salt|sysutils/py-salt|2013-01-27|Rename to consistency with other Python ports sysutils/salt-cloud|sysutils/py-salt-cloud|2013-01-27|Rename to consistency with other Python ports deskutils/py-dosage|deskutils/dosage|2013-01-28|Rename - it's a standalone application textproc/clucene-contrib|textproc/clucene|2013-01-28|Integrated into textproc/clucene lang/erlang14||2013-01-30|Not needed; no issues came up with R15 www/tomcat55||2013-01-31|Has expired: EOL and unsupported upstream net/samba-pdbsql||2013-01-31|Depends from the obsoleted net/samba34 net/samba35||2013-01-31|Obsoleted by net/samba36 devel/llvm29|devel/llvm|2013-02-01|Obsolete and unmaintained lang/llvm-gcc4|lang/dragonegg46|2013-02-01|Obsolete and unmaintained net-mgmt/nagiosgrapher||2013-02-02|Has expired: Deprecated upstream. Please use net-mgmt/pnp instead x11-fm/x-files||2013-02-02|Has expired: Project has been abandoned devel/kdebindings4-perl-perlkde|devel/p5-perlkde|2013-02-03|Renamed devel/kdebindings4-perl-perlqt|devel/p5-perlqt|2013-02-03|Renamed devel/kdebindings4-python-krosspython|devel/py-krosspython|2013-02-03|Renamed devel/kdebindings4-python-pykde4|devel/py-pykde4|2013-02-03|Renamed devel/kdebindings4-python-pykdeuic4|devel/py-pykdeuic4|2013-02-03|Renamed devel/kdebindings4-ruby-korundum|devel/ruby-korundum|2013-02-03|Renamed devel/kdebindings4-ruby-krossruby|devel/ruby-krossruby|2013-02-03|Renamed devel/kdebindings4-ruby-qtruby|devel/ruby-qtruby|2013-02-03|Renamed devel/kdebindings4-smoke-smokegen|devel/smokegen|2013-02-03|Renamed devel/kdebindings4-smoke-smokekde|devel/smokekde|2013-02-03|Renamed devel/kdebindings4-smoke-smokeqt|devel/smokeqt|2013-02-03|Renamed net/freeradius||2013-02-04|Has expired: no longer supported. Please use net/freeradius2 instead net/freeradius-mysql||2013-02-04|Has expired: no longer supported. Please use net/freeradius2 instead multimedia/despotify||2013-02-04|Has expired: API no longer supported irc/zircon||2013-02-04|Has expired: Project has been abandoned math/lensnns||2013-02-04|Has expired: Project has been abandoned lang/perl5.8||2013-02-04|Has expired: no longer under development, use lang/perl5.16 or lang/perl5.14 lang/perl5.10||2013-02-04|Has expired: no longer under development, use lang/perl5.16 or lang/perl5.14 net-mgmt/argus||2013-02-05|Has expired: Using of this branch of argus is discouraged. Please migrate to net-mgmt/argus3 net-mgmt/argus-clients||2013-02-05|Has expired: Using of this branch of argus-clients is discouraged. Please migrate to net-mgmt/argus3-clients net/libcmis03|net/libcmis|2013-02-05|libcmis has been updated to 0.3 x11-toolkits/fltk2||2013-02-05|Has expired: No more public distfiles for version 2 devel/kBuild-devel||2013-02-05|Not required anymore; use devel/kBuild instead games/freebsd-carddeck-kde4||2013-02-05|Has expired: deck file format is obsolete japanese/vflib||2013-02-06|Has expired: No more public distfiles graphics/py-visual||2013-02-06|Has expired: Depends on the expired x11-toolkits/gtkglarea math/gnuplot+||2013-02-06|Upstream says: This package is obsolete. The author does not recommend to use it science/vis5d+||2013-02-06|No new release since 2001, depends on expired x11-toolkits/gtkglarea lang/tcl-modules||2013-02-06|Modules are now part of the base Tcl distributions lang/tcl84-thread||2013-02-06|Threads are now enabled by default lang/tcl85-thread||2013-02-06|Threads are now enabled by default lang/tcl86-thread||2013-02-06|Threads are now enabled by default x11-toolkits/tk84-thread||2013-02-06|Threads are now enabled by default x11-toolkits/tk85-thread||2013-02-06|Threads are now enabled by default x11-toolkits/tk86-thread||2013-02-06|Threads are now enabled by default x11-fm/fsv||2013-02-14|Depends on expired x11-toolkits/gtkglarea x11-toolkits/gtkglarea||2013-02-14|Has expired: No more public distfiles graphics/solang||2013-02-14|Has expired: Broken for more than 6 months math/octave-devel||2013-02-14|Has expired: Broken for more than 6 months net/spnetkit||2013-02-14|Has expired: Broken for more than 6 months devel/py-flakes|devel/py-pyflakes|2013-02-18|Renamed to correct upstream name net/libnet-devel|net/libnet|2013-02-18|Renamed to stable branch x11-fm/tkdesk||2013-02-19|Obsolete and unmaintained, doesn't run textproc/libmspub|print/libmspub|2013-02-21|Duplicate of print/libmspub x11-drivers/xf86-video-intel29||2013-02-21|No longer supported emulators/bsnes|emulators/higan|2013-02-22|Renamed upstream sysutils/fio|benchmarks/fio|2013-02-22|Moved to benchmarks category japanese/MT|www/MT|2013-02-23|Remove, because it was merged into main www/MT french/MT|www/MT|2013-02-23|Remove, because it was merged into main www/MT german/MT|www/MT|2013-02-23|Remove, because it was merged into main www/MT dns/p5-Net-DNS-ZoneFile||2013-02-25|Now bundled with dns/p5-Net-DNS textproc/stardict2-rptts|textproc/stardict-rptts|2013-02-25|Renamed audio/laudio|audio/linux-laudio|2013-02-27|Renamed (Linux binary port) multimedia/qt4-phonon||2013-02-27|Has expired: Qt 4.x uses multimedia/phonon multimedia/qt4-phonon-gst||2013-02-27|Has expired: Qt 4.x uses multimedia/phonon-gstreamer math/eigen||2013-02-27|Has expired: development for 1.x series has ceased, use math/eigen3 instead multimedia/ffmpeg-011||2013-03-01|Has expired: replaced with 1.0.x, use multimedia/ffmpeg1 instead ftp/ftp-tls||2013-03-02|Has expired: No longer maintained upstream ftp/ftpd-tls||2013-03-02|Has expired: No longer maintained upstream lang/eperl||2013-03-03|Has expired: Unfixed upstream remote vulnerability and no activity since 1998 x11-wm/e17-module-language||2013-03-03|Has expired: Deprecated upstream x11-wm/e17-module-xkbswitch||2013-03-03|Has expired: Merged into x11-wm/enlightenment x11-wm/e17-module-e-tiling||2013-03-03|Has expired: Deprecated upstream x11-wm/e17-module-quickaccess||2013-03-03|Has expired: Merged into x11-wm/enlightenment x11-wm/e17-module-tiling||2013-03-03|Has expired: Merged into x11-wm/enlightenment x11-wm/e17-module-drawer||2013-03-03|Has expired: Deprecated upstream x11-wm/e17-module-calendar||2013-03-03|Has expired: Deprecated upstream x11/oooqs||2013-03-03|Has expired: For old OOo versions; uses kde3; unmaintained upstream; see x11/oooqs2 www/xpi-customizegoogle||2013-03-03|Has expired: Add-on has been discontinued games/kimboot||2013-03-03|Has expired: no longer works net-im/imcom||2013-03-03|Has expired: No more upstream, no more public distfiles security/lep||2013-03-03|Has expired: No more upstream, no more public distfiles devel/cvsmapfs||2013-03-03|Has expired: No more upstream, no more public distfiles devel/sid||2013-03-03|Has expired: No more upstream, no more public distfiles net-mgmt/nrpep||2013-03-03|Has expired: No more upstream, no more public distfiles devel/py-ez_xml||2013-03-03|Has expired: No more upstream, no more public distfiles security/IMHear||2013-03-03|Has expired: No more upstream, no more public distfiles comms/scud||2013-03-03|Has expired: No more upstream, no more public distfiles devel/lexi||2013-03-03|Has expired: No more upstream, no more public distfiles games/pentix||2013-03-03|Has expired: No more upstream, no more public distfiles net/py-mp-random||2013-03-03|Has expired: No more upstream, no more public distfiles sysutils/rcsedit||2013-03-03|Has expired: No more upstream, no more public distfiles sysutils/bsdsar||2013-03-03|Has expired: No more upstream, no more public distfiles sysutils/sarah||2013-03-03|Has expired: No more upstream, no more public distfiles www/igal||2013-03-03|Has expired: No more upstream, no more public distfiles, consider using www/llgal finance/tinyerp-server||2013-03-03|Has expired: No more upstream, no more public distfiles, consider using finance/openerp-server ports-mgmt/portcheck||2013-03-03|Has expired: No more upstream, no more public distfiles security/sslproxy||2013-03-03|Has expired: Abandoned upstream x11-themes/e17-theme-darkness||2013-03-03|Has expired: No more public distfiles x11-themes/e17-theme-cthulhain||2013-03-03|Has expired: Dead upstream since 2008 x11-servers/driglide||2013-03-03|Has expired: 3dfx is dead, fails to compile on recent versions of FreeBSD mail/gmime||2013-03-03|Has expired: superseded with version 2.4 archivers/bsdar||2013-03-03|Has expired: part of the base system now misc/instant-server||2013-03-04|Removed: Non-essential meta port sysutils/sge60||2013-03-06|Has expired: Ancient and unsupported release sysutils/sge61||2013-03-06|Has expired: Ancient and unsupported release x11-themes/sapphire-themes||2013-03-06|Has expired: Broken for more than 6 months misc/fep||2013-03-06|Has expired: Broken for more than 6 months devel/gauche-gaunit||2013-03-06|Has expired: Broken for more than 6 months games/tuxracer_golf||2013-03-06|Has expired: Broken for more than 6 months net/bfilter||2013-03-06|Has expired: Broken for more than 6 months graphics/fnlib||2013-03-06|Has expired: Broken for more than 6 months print/gfontview||2013-03-06|Has expired: Broken for more than 6 months print/hugelatex||2013-03-06|Has expired: Broken for more than 6 months misc/gtktalog||2013-03-06|Has expired: Broken for more than 6 months x11/wterm||2013-03-06|Has expired: Broken for more than 6 months databases/xapian-bindings10||2013-03-06|Has expired: Broken for more than 6 months databases/adstudio||2013-03-06|Has expired: Broken for more than 6 months misc/splitvt||2013-03-06|Has expired: Broken for more than 6 months sysutils/udesc_dump||2013-03-06|Has expired: Broken for more than 6 months textproc/gxditview||2013-03-06|Has expired: Broken for more than 6 months x11/powershell||2013-03-06|Has expired: Broken for more than 6 months devel/ZendOptimizer|www/pecl-zendoptimizerplus|2013-03-07|Replaced with supported open-source release net-im/jreen|net-im/libjreen|2013-03-07|Duplicate of net-im/libjreen databases/ruby-dbdbd||2013-03-08|Dead project, no known users japanese/scim-mozc||2013-03-09|Google had dropped SCIM support from Mozc net-p2p/transmission25|net-p2p/transmission|2013-03-09|gtk version is now fine net-p2p/transmission25-cli|net-p2p/transmission-cli|2013-03-09|gtk version is now fine net-p2p/transmission25-daemon|net-p2p/transmission-daemon|2013-03-09|gtk version is now fine net-p2p/transmission25-gtk2|net-p2p/transmission-gtk2|2013-03-09|gtk version is now fine net-p2p/transmission25-qt4|net-p2p/transmission-qt4|2013-03-09|gtk version is now fine www/transmission25-web|www/transmission-web|2013-03-09|gtk version is now fine net-p2p/transmission-gtk2|net-p2p/transmission-gtk|2013-03-09|Now uses GTK 3 ftp/proma||2013-03-09|Has expired: Broken for more than 6 months vietnamese/vnelvis||2013-03-09|Has expired: Broken for more than 6 months devel/rubygem-ncursesw||2013-03-09|Has expired: Broken for more than 6 months www/wyvern||2013-03-09|Has expired: Broken for more than 6 months devel/xlslib||2013-03-09|Has expired: Broken for more than 6 months mail/firetray||2013-03-09|Has expired: Broken for more than 6 months vietnamese/vnterm||2013-03-09|Has expired: Broken for more than 6 months graphics/vid||2013-03-09|Has expired: Broken for more than 6 months games/kye-data||2013-03-12|Deleted: Merged with games/kye misc/gopod||2013-03-13|Has expired: does not work with modern iPods anymore misc/gtk-gopod||2013-03-13|Has expired: does not work with modern iPods anymore emulators/vmware-tools5||2013-03-14|Has expired: No more supported upstream emulators/vmware-tools6||2013-03-14|Has expired: No more supported upstream emulators/vmware-tools4||2013-03-14|Has expired: No more supported upstream emulators/vmware-guestd4||2013-03-14|Has expired: No more supported upstream emulators/linux-vmware-toolbox6||2013-03-14|Has expired: No more supported upstream emulators/vmware-guestd6||2013-03-14|Has expired: No more supported upstream emulators/linux-vmware-toolbox4||2013-03-14|Has expired: No more supported upstream emulators/linux-vmware-toolbox5||2013-03-14|Has expired: No more supported upstream emulators/vmware-guestd5||2013-03-14|Has expired: No more supported upstream net-mgmt/zabbix-agent|net-mgmt/zabbix2-agent|2013-03-15|Has expired: no longer supported by upstream net-mgmt/zabbix-frontend|net-mgmt/zabbix2-frontend|2013-03-15|Has expired: no longer supported by upstream net-mgmt/zabbix-proxy|net-mgmt/zabbix2-proxy|2013-03-15|Has expired: no longer supported by upstream net-mgmt/zabbix-server|net-mgmt/zabbix2-server|2013-03-15|Has expired: no longer supported by upstream dns/h2n||2013-03-17|Removed: legally questionable and obsolete french/gibi||2013-03-18|Removed: IGNORE for more than 6 months finance/pfpro||2013-03-18|Removed: upstream no longer exists finance/p5-PFProAPI||2013-03-18|Removed: upstream no longer exists finance/p5-Business-OnlinePayment-PayflowPro||2013-03-18|Removed: upstream no longer exists www/nspluginwrapper-devel||2013-03-19|Removed: superseded by www/nspluginwrapper french/eficas_doc||2013-03-19|Removed: eficas is now able to open the documentation through a web browser so the PDF files are no longer included archivers/zpaq|archivers/paq|2013-03-20|Part of archivers/paq editors/openoffice.org-vcltesttool||2013-03-21|Removed: no longer used for OpenOffice QA editors/openoffice-3-devel|editors/openoffice-devel|2013-03-21|Renamed to match current version number devel/geany-plugin-gdb||2013-03-21|Removed from geany plugins distribution www/kompozer||2013-03-22|Has expired: Dead upstream graphics/fpc-fpvectorial||2013-03-23|Removed from freepascal packages distribution databases/akonadi-google|deskutils/kdepim4-runtime|2013-03-24|Merged into deskutils/kdepim4-runtime www/pecl-zendoptimizerplus|www/pecl-zendopcache|2013-03-27|Renamed print/kdeutils4-printer-applet|print/kde4-print-manager|2013-03-27|Superseded by print/kde4-print-manager print/system-config-printer-kde|print/kde4-print-manager|2013-03-27|Superseded by print/kde4-print-manager science/py-biolccc|science/pyteomics.biolccc|2013-03-28|Renamed upstream math/hs-Agda-executable||2013-03-29|Removed: it has become part of math/hs-Agda mail/thunderbird-esr|mail/thunderbird|2013-04-03|Removed: Mozilla stopped providing 2 versions of thunderbird mail/thunderbird-esr-i18n|mail/thunderbird-i18n|2013-04-03|Removed: Mozilla stopped providing 2 versions of thunderbird www/mod_security21|www/mod_security|2013-04-16|Removed: outdated and had a vulnerability, consider using a newer version www/linux-flashplugin9||2013-04-16|Has expired: Vulnerable, Broken for more than 6 months www/p5-Apache-GopherHandler||2013-04-16|Has expired: Depends on p5-Net-Gopher which is deprecated and expired net/p5-Gopher-Server||2013-04-16|Has expired: Depends on p5-Net-Gopher which is deprecated and expired net/p5-Net-Gopher||2013-04-16|Has expired: gone from CPAN x11-drivers/xf86-video-radeonhd-devel||2013-04-16|Has expired: Unsupported devel version devel/ros-image_common||2013-04-16|Has expired: Depends on devel/ros_common which is broken for more than 6 months devel/ros-laser_pipeline||2013-04-16|Has expired: Depends on devel/ros_common which is broken for more than 6 months databases/php52-rrdtool||2013-04-16|Has expired: PHP 5.2 series is strongly discouraged for new installations, migrate now devel/ros-common||2013-04-16|Has expired: Broken for more than 6 months devel/goffice04||2013-04-16|Removed: No users, blocking libgsf update devel/goffice06||2013-04-16|Removed: No users, blocking libgsf update devel/goffice1||2013-04-16|Removed: Only one port user which has no user itself. blocking libgsf update devel/present||2013-04-16|Removed: No users, blocking libgsf update audio/icecast|audio/icecast2|2013-04-18|Has expired: Unmaintained upstream since 2004. Use audio/icecast2 instead net-im/gajim-devel|net-im/gajim|2013-04-18|Has expired: This port is outdated for two years, no distfile available. Please use net-im/gajim instead dns/bind97||2013-04-20|Has expired: No longer supported by ISC, use Bind 9.8 or 9.9 dns/bind97-sdb||2013-04-20|Has expired: No longer supported by ISC, use Bind 9.8 or 9.9 sysutils/grub||2013-04-22|Unmaintained and broken sysutils/kgrubeditor||2013-04-22|Depends on broken and removed grub port games/grubinvaders||2013-04-22|Depends on broken and removed grub port lang/tcl83||2013-04-23|Has expired: No longer supported x11-toolkits/tk83||2013-04-23|Has expired: No longer supported print/psutils-a4|print/psutils|2013-04-24|Merged into print/psutils print/psutils-letter|print/psutils|2013-04-24|Merged into print/psutils editors/tamago-emacs21||2013-04-24|Removed: obsolete devel/py-extended_threading||2013-04-26|Has expired: checksum mismatch; domain disappeared databases/mysql41-server||2013-04-26|Unsupported upstream since 2009-12-31 databases/mysql41-client||2013-04-26|Unsupported upstream since 2009-12-31 databases/mysql41-scripts||2013-04-26|Unsupported upstream since 2009-12-31 databases/p5-DBD-mysql41||2013-04-26|Depends on databases/mysql41-server, which was removed security/gnupg-idea|security/gnupg1|2013-04-26|Modules now included in GnuPG 1.4.13 print/c2ps-letter|print/c2ps|2013-04-27|Merged into print/c2ps print/c2ps-a4|print/c2ps|2013-04-27|Merged into print/c2ps print/lprps-letter|print/lprps|2013-04-27|Merged into print/lprps print/lprps-a4|print/lprps|2013-04-27|Merged into print/lprps graphics/jpeg2ps-letter|graphics/jpeg2ps|2013-04-27|Merged into graphics/jpeg2ps graphics/jpeg2ps-a4|graphics/jpeg2ps|2013-04-27|Merged into graphics/jpeg2ps print/a2ps-letter|print/a2ps|2013-04-27|Merged into print/a2ps print/a2ps-letterdj|print/a2ps|2013-04-27|Merged into print/a2ps print/a2ps-a4|print/a2ps|2013-04-27|Merged into print/a2ps print/html2ps-letter|print/html2ps|2013-04-28|Merged into print/html2ps print/html2ps-a4|print/html2ps|2013-04-28|Merged into print/html2ps devel/libusb||2013-04-30|Has expired: has been already included into base system www/typo346||2013-04-30|Has expired: Obsolete stable release www/ilias3||2013-04-30|Has expired: Obsolete stable release net-p2p/moodriver||2013-04-30|Has expired: Not supported by upstream, master site is down www/p5-Dancer-Plugin-DataFu||2013-04-30|Has expired: No more public distfiles devel/p5-Oogly||2013-04-30|Has expired: No more public distfiles mail/listmanager||2013-04-30|Has expired: No more upstream, no more public distfiles net-mgmt/nettop||2013-04-30|Has expired: Dead upstream devel/ruby-term-ansicolor|devel/rubygem-term-ansicolor|2013-04-30|Moved to Rubygems www/mediawiki|www/mediawiki119|2013-05-01|Rename mediawiki to mediawiki119 www/squid31||2013-05-01|Has expired: No longer actively maintained upstream converters/ruby-bsdconv|converters/rubygem-bsdconv|2013-05-01|Moved to Rubygems editors/nxml-emacs21||2013-05-02|Removed: obsolete textproc/ruby-libxml||2013-05-02|Has expired: Does not work with Ruby 1.9 japanese/navi2ch-emacs21|japanese/navi2ch|2013-05-02|Removed: obsolete japanese/navi2ch-xemacs21-mule|japanese/navi2ch|2013-05-02|Removed: obsolete devel/py-libgsf||2013-05-05|No longer supported by newer libgsf version devel/libgsf-gnome||2013-05-05|No longer supported by newer libgsf version textproc/ruby-sablot||2013-05-07|Has expired: Does not work with Ruby 1.9 japanese/jisx0213-fonts|japanese/font-jisx0213|2013-05-08|Renamed x11-drivers/xf86-video-ati613||2013-05-10|Has expired: Old version, use xf86-video-ati instead devel/u-boot|devel/uboot-mkimage|2013-05-11|Port does not build full uboot distribution, only mkimage misc/py-xdelta3||2013-05-13|No longer actively maintained upstream devel/py-celementtree||2013-05-16|Included into all supported python versions as xml.etree.cElementTree textproc/p5-KinoSearch||2013-05-16|Replaced by textproc/p5-KinoSearch1 converters/R-cran-xtable||2013-05-17|Removed science/py-obspy.db||2013-05-17|Removed: Use science/py-obspy instead science/py-obspy.gse2||2013-05-17|Removed: Use science/py-obspy instead science/py-obspy.imaging||2013-05-17|Removed: Use science/py-obspy instead science/py-obspy.iris||2013-05-17|Removed: Use science/py-obspy instead science/py-obspy.mseed||2013-05-17|Removed: Use science/py-obspy instead science/py-obspy.signal||2013-05-17|Removed: Use science/py-obspy instead science/py-obspy.taup||2013-05-17|Removed: Use science/py-obspy instead science/py-obspy.wav||2013-05-17|Removed: Use science/py-obspy instead science/py-obspy.xseed||2013-05-17|Removed: Use science/py-obspy instead science/py-obspy-core|science/py-obspy|2013-05-17|Use science/py-obspy instead mail/sendmail-ldap|mail/sendmail|2013-05-17|Removed: Use mail/sendmail instead databases/innobackup|databases/xtrabackup|2013-05-18|Removed: Use databases/xtrabackup instead audio/gogo-petit||2013-05-20|Has expired: No more public distfiles x11-wm/transset-df|x11-wm/transset|2013-05-20|Project was renamed print/yatex-xemacs||2013-05-21|Removed: obsolete devel/php5-phing|devel/pear-phing|2013-05-21|Replaced by devel/pear-phing emulators/hfsutils|sysutils/hfsutils|2013-05-23|Moved to a better category devel/lfc|devel/lfcbase|2013-05-23|Rename to avoid package conflicts sysutils/rsyslog5||2013-05-25|Removed: use sysutils/rsyslog7 sysutils/rsyslog5-dbi||2013-05-25|Removed: use sysutils/rsyslog7 sysutils/rsyslog5-gnutls||2013-05-25|Removed: use sysutils/rsyslog7 sysutils/rsyslog5-gssapi||2013-05-25|Removed: use sysutils/rsyslog7 sysutils/rsyslog5-mysql||2013-05-25|Removed: use sysutils/rsyslog7 sysutils/rsyslog5-pgsql||2013-05-25|Removed: use sysutils/rsyslog7 sysutils/rsyslog5-relp||2013-05-25|Removed: use sysutils/rsyslog7 sysutils/rsyslog5-rfc3195||2013-05-25|Removed: use sysutils/rsyslog7 sysutils/rsyslog5-snmp||2013-05-25|Removed: use sysutils/rsyslog7 accessibility/linux-atk||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life archivers/linux-ucl||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life archivers/linux-upx||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life audio/linux-alsa-lib||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life audio/linux-arts||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life audio/linux-esound||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life audio/linux-freealut||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life audio/linux-libaudiofile||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life audio/linux-libmad||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life audio/linux-libogg||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life audio/linux-libvorbis||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life audio/linux-mikmod||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life audio/linux-nas-libs||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life audio/linux-openal||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life audio/linux-sdl_mixer||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life devel/linux-allegro||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life devel/linux-libglade||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life devel/linux-libglade2||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life devel/linux-libsigc++20||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life devel/linux-sdl12||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life emulators/linux-libaio||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life emulators/linux_base-fc4||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life ftp/linux-curl||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life graphics/linux-cairo||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life graphics/linux-gdk-pixbuf||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life graphics/linux-imlib||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life graphics/linux-jpeg||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life graphics/linux-libGLU||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life graphics/linux-libmng||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life graphics/linux-png||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life graphics/linux-png10||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life graphics/linux-sdl_image||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life graphics/linux-tiff||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life graphics/linux-ungif||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life lang/linux-libg2c||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life multimedia/linux-libtheora||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life security/linux-openssl||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life sysutils/linux-procps||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life textproc/linux-aspell||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life textproc/linux-expat||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life textproc/linux-libxml||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life textproc/linux-libxml2||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life textproc/linux-scim-gtk||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life textproc/linux-scim-libs||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life textproc/linux-xerces-c2||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life x11/linux-xorg-libs||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life x11-fonts/linux-fontconfig||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life x11-toolkits/linux-gtk||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life x11-toolkits/linux-gtk2||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life x11-toolkits/linux-openmotif||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life x11-toolkits/linux-pango||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life x11-toolkits/linux-qt33||2013-05-30|Has expired: Only used on FreeBSD 7, which is end-of-life irc/bitchx-devel|irc/bitchx|2013-05-31|Release finally cut www/rubygem-selnium-webdriver|www/rubygem-selenium-webdriver|2013-06-01|Fix typo in port name mail/p5-vpopmail||2013-06-03|Has expired: Broken for more than 6 months mail/vodmr||2013-06-03|Has expired: depends on expired mail/p5-vpopmail devel/libzrtp||2013-06-03|Has expired: No more public distfiles mail/postfix26||2013-06-03|Has expired: No longer supported by upstream devel/i386-rtems-gcc||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/mips-rtems-gcc||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/arm-rtems-gcc||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/sh-rtems-gcc||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/powerpc-rtems-gcc||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/sparc-rtems-gcc||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/mips-rtems-binutils||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/i386-rtems-binutils||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/sh-rtems-binutils||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/powerpc-rtems-binutils||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/sparc-rtems-binutils||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/arm-rtems-binutils||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/m68k-rtems-binutils||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/m68k-rtems-gcc||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/sh-rtems-gdb||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/m68k-rtems-gdb||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/i386-rtems-gdb||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/arm-rtems-gdb||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/sparc-rtems-gdb||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/mips-rtems-gdb||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 devel/powerpc-rtems-gdb||2013-06-03|Has expired: many issues; see https://www.rtems.org/bugzilla/show_bug.cgi?id=2099 databases/php-sqlite3||2013-06-03|Has expired: No upstream development and superseded by databases/php5-sqlite3 and databases/php53-sqlite3 databases/mysql50-server||2013-06-04|Unsupported upstream since 2012-01-09 databases/mysql50-client||2013-06-04|Unsupported upstream since 2012-01-09 databases/mysql50-scripts||2013-06-04|Unsupported upstream since 2012-01-09 databases/p5-DBD-mysql50||2013-06-04|Depends on databases/mysql50-server, which was removed databases/postgresql83-client||2013-06-04|Has expired: Update to supported version databases/postgresql83-contrib||2013-06-04|Has expired: Update to supported version databases/postgresql83-docs||2013-06-04|Has expired: Update to supported version databases/postgresql83-plperl||2013-06-04|Has expired: Update to supported version databases/postgresql83-plpython||2013-06-04|Has expired: Update to supported version databases/postgresql83-pltcl||2013-06-04|Has expired: Update to supported version databases/postgresql83-server||2013-06-04|Has expired: Update to supported version deskutils/msynctool-devel|deskutils/osynctool|2013-06-04|Development of msynctool ceased and project was renamed www/hs-yesod-default||2013-06-04|Removed: This package is obsoleted since Yesod 1.2 www/hs-yesod-json||2013-06-04|Removed: This package is obsoleted since Yesod 1.2 security/fwtk||2013-06-04|Removed: No more public distfiles net/samba34|net/samba36|2013-06-04|Removed: Unmaintained by upstream devel/linux-js||2013-06-04|Has expired: Broken for more than 6 months emulators/osmose||2013-06-04|Removed: depends on expired devel/linux-js security/pam_authsrv||2013-06-04|Removed: depends on expired and removed security/fwtk emulators/linux-xjoypad||2013-06-05|Removed: depend on expired devel/linux-js, consider using emulators/joytran instead lang/elisp-manual||2013-06-05|Has expired: Broken for more than 6 months sysutils/sge62||2013-06-05|Has expired: Ancient and unsupported release x11-toolkits/ruby-wx||2013-06-07|Has expired: Does not work with Ruby 1.9 sysutils/userspace-rcu|sysutils/liburcu|2013-06-07|Renamed correctly according to upstream mail/mixminion||2013-06-07|Has expired: This port requires python version, we haven't in the ports tree already devel/gprbuild-aux|devel/gprbuild|2013-06-10|Has expired: Deprecated in favor of devel/gprbuild devel/linuxthreads||2013-06-10|Has expired: Broken for more than 6 months mail/claws-mail-gtkhtml2_viewer|mail/claws-mail-fancy|2013-06-11|Has expired: No longer maintained, please use mail/claws-mail-fancy instead mail/claws-mail-cachesaver||2013-06-11|Has expired: No longer maintained by Claws Mail team deskutils/contacts||2013-06-13|Has expired: upstream project discontinued for years, upstream sources are gone www/libxul19|www/libxul|2013-06-15|Has been vulnerable for a long time, unsupported upstream chinese/cxterm||2013-06-17|Has expired: does not compile games/rtcw|games/linux-rtcw|2013-06-18|Renamed (Linux binary port) multimedia/p5-Video-Info||2013-06-19|Has expired: Broken for more than 6 months net-p2p/p5-pdonkey||2013-06-19|Removed: depends on expired multimedia/p5-Video-Info lang/boo||2013-06-19|Has expired: Broken for more than 6 months databases/py-MySQLdb41||2013-06-19|Depends on databases/mysql41-client, which was removed databases/py-MySQLdb50||2013-06-19|Depends on databases/mysql50-client, which was removed devel/bugzilla|devel/bugzilla40|2013-06-20|Renamed emulators/fceu-server|emulators/fceux|2013-06-21|Has expired: Replaced by emulators/fceux graphics/py-graphillion|math/py-graphillion|2013-06-22|Correct category assignment net-im/mikutter003||2013-06-23|Obsolete: Use net-im/mikutter instead of this www/rubygem-addressable22||2013-06-23|Removed textproc/freegrep||2013-06-27|Has expired: included in base www/siteatschool||2013-06-30|Has expired: Unmaintained upstream textproc/romdict||2013-06-30|Has expired: Upstream the project seems dead for years www/dillo-i18n||2013-06-30|Has expired: dillo1 is no longer actively maintained. Please consider using www/dillo2 which has full UTF-8 support www/dillo||2013-06-30|Has expired: dillo1 is no longer actively maintained. Please consider using www/dillo2 instead comms/qfaxreader||2013-06-30|Has expired: No activity upstream since 2006; uses Qt 3.x net/openldap23-sasl-client||2013-07-01|Has expired: Unmaintained by upstream net/openldap23-server||2013-07-01|Has expired: Unmaintained by upstream net/openldap23-client||2013-07-01|Has expired: Unmaintained by upstream www/py-django13||2013-07-01|Has expired: Unsupported version devel/libtifiles|devel/libtifiles2|2013-07-01|Has expired: Superseded by devel/libtifiles2 comms/libticables|comms/libticables2|2013-07-01|Has expired: Superseded by comms/libticables2 devel/libticalcs|comms/libticalcs2|2013-07-01|Has expired: Superseded by comms/libticalcs2 emulators/tiemu2|emulators/tiemu3|2013-07-01|Has expired: Superseded by emulators/tiemu3 graphics/linux_dri|graphics/linux-f10-dri|2013-07-03|Superseded by graphics/linux-f10-dri graphics/linux-dri74|graphics/linux-f10-dri|2013-07-03|Superseded by graphics/linux-f10-dri games/gnomememoryblocks||2013-07-04|Has expired: Unsupported upstream devel/py-reddit||2013-07-07|Has been removed from PyPI, Use www/py-praw games/speakinghangman||2013-07-07|Has expired: No more public distfiles security/pinentry-qt||2013-07-09|Removed: Qt 3.x ports have expired games/nethack34-qt|games/nethack34-gnome|2013-07-09|Uses unsupported Qt version audio/gdam||2013-07-10|Has expired: Broken for a while devel/gnome-vfs1||2013-07-10|Has expired: No more depend on, No more supported upstream textproc/ua-ispell|ukrainian/ispell|2013-07-10|Removed because it has been moved to ukrainian/ispell 12 years ago security/openvpn20|security/openvpn|2013-07-11|Has expired: Superseded by security/openvpn databases/embedded_innodb||2013-07-11|Has expired: The Embedded InnoDB project was terminated a few years ago print/lyx16|print/lyx|2013-07-11|Has expired: Unmaintained upstream, upgrading to the 2.x series is advised security/py-crack|security/py-cracklib|2013-07-11|Has expired: Superseded by security/py-cracklib x11-toolkits/linux-f10-qt33||2013-07-12|Removed net/urtwn-firmware-kmod||2013-07-12|Removed, part of base as of r253139 benchmarks/polygraph31||2013-07-13|Has expired: Broken since March 2010 net/avahi-qt3||2013-07-13|Depends on the expired Qt 3.x port www/xpi-gwt-dev-plugin||2013-07-15|Has expired: Requires an ancient version of Firefox to build security/pyobfsproxy|security/obfsproxy|2013-07-15|Rename devel/kdevelop-custom-buildsystem||2013-07-17|Has expired: part of devel/kdevelop-kde4 now ftp/p5-curl|www/p5-WWW-Curl|2013-07-17|Duplicate editors/code-browser||2013-07-18|Removed lang/copper||2013-07-18|Removed x11-themes/linux-gtk-bluecurve-theme||2013-07-18|Removed, requires Linux FC3 misc/rabbit|misc/rubygem-rabbit|2013-07-24|Moved to Rubygems sysutils/rsyslog6-devel-pgsql|sysutils/rsyslog7|2013-07-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6-devel-gnutls|sysutils/rsyslog7|2013-07-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6-devel-snmp|sysutils/rsyslog7|2013-07-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6-devel-rfc3195|sysutils/rsyslog7|2013-07-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6-devel-mysql|sysutils/rsyslog7|2013-07-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6-devel-relp|sysutils/rsyslog7|2013-07-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6-devel-dbi|sysutils/rsyslog7|2013-07-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6-devel-gssapi|sysutils/rsyslog7|2013-07-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6-devel|sysutils/rsyslog7|2013-07-25|Has expired: Use sysutils/rsyslog7 graphics/allegrogl||2013-07-26|Now part of devel/allegro arabic/kde3-i18n||2013-07-26|Has expired: Depends on Qt 3.x archivers/kio_p7zip||2013-07-26|Has expired: Depends on Qt 3.x astro/celestia-kde||2013-07-26|Has expired: Depends on Qt 3.x astro/orsa||2013-07-26|Has expired: Depends on Qt 3.x audio/amarok||2013-07-26|Has expired: Depends on Qt 3.x audio/amarok-fs||2013-07-26|Has expired: Depends on Qt 3.x audio/arts||2013-07-26|Has expired: Depends on Qt 3.x audio/cheesetracker||2013-07-26|Has expired: Depends on Qt 3.x audio/cynthiune||2013-07-26|Has expired: Depends on Qt 3.x audio/ermixer||2013-07-26|Has expired: Depends on Qt 3.x audio/k3bmonkeyaudioplugin||2013-07-26|Has expired: Depends on Qt 3.x audio/kid3||2013-07-26|Has expired: Depends on Qt 3.x audio/kirocker||2013-07-26|Has expired: Depends on Qt 3.x audio/kmp||2013-07-26|Has expired: Depends on Qt 3.x audio/lplayer||2013-07-26|Has expired: Depends on Qt 3.x audio/madman||2013-07-26|Has expired: Depends on Qt 3.x audio/mpeglib_artsplug||2013-07-26|Has expired: Depends on Qt 3.x audio/prokyon3||2013-07-26|Has expired: Depends on Qt 3.x audio/xmms-kde||2013-07-26|Has expired: Depends on Qt 3.x audio/yammi||2013-07-26|Has expired: Depends on Qt 3.x cad/opencascade-tutorial||2013-07-26|Has expired: Depends on Qt 3.x cad/vipec||2013-07-26|Has expired: Depends on Qt 3.x chinese/kde3-i18n-zh_CN||2013-07-26|Has expired: Depends on Qt 3.x chinese/kde3-i18n-zh_TW||2013-07-26|Has expired: Depends on Qt 3.x comms/kallers||2013-07-26|Has expired: Depends on Qt 3.x comms/kmobiletools||2013-07-26|Has expired: Depends on Qt 3.x comms/kpsk||2013-07-26|Has expired: Depends on Qt 3.x comms/ktrack||2013-07-26|Has expired: Depends on Qt 3.x converters/ktextdecode||2013-07-26|Has expired: Depends on Qt 3.x databases/kmysqladmin||2013-07-26|Has expired: Depends on Qt 3.x databases/knoda||2013-07-26|Has expired: Depends on Qt 3.x databases/ksqlanalyzer||2013-07-26|Has expired: Depends on Qt 3.x databases/ksqlshell||2013-07-26|Has expired: Depends on Qt 3.x databases/mysql-navigator||2013-07-26|Has expired: Depends on Qt 3.x databases/qt-mysql-plugin||2013-07-26|Has expired: Depends on Qt 3.x databases/qt-odbc-plugin||2013-07-26|Has expired: Depends on Qt 3.x databases/qt-pgsql-plugin||2013-07-26|Has expired: Depends on Qt 3.x databases/qt-sqlite-plugin||2013-07-26|Has expired: Depends on Qt 3.x deskutils/bookreader||2013-07-26|Has expired: Depends on Qt 3.x deskutils/dragstack||2013-07-26|Has expired: Depends on Qt 3.x deskutils/karamba||2013-07-26|Has expired: Depends on Qt 3.x deskutils/katapult||2013-07-26|Has expired: Depends on Qt 3.x deskutils/kbirthday||2013-07-26|Has expired: Depends on Qt 3.x deskutils/kblticker||2013-07-26|Has expired: Depends on Qt 3.x deskutils/kchm||2013-07-26|Has expired: Depends on Qt 3.x deskutils/kdepim3||2013-07-26|Has expired: Depends on Qt 3.x deskutils/kdissert||2013-07-26|Has expired: Depends on Qt 3.x deskutils/kickpim||2013-07-26|Has expired: Depends on Qt 3.x deskutils/klipoquery||2013-07-26|Has expired: Depends on Qt 3.x deskutils/kluje||2013-07-26|Has expired: Depends on Qt 3.x deskutils/kmatrix3d||2013-07-26|Has expired: Depends on Qt 3.x deskutils/knowit||2013-07-26|Has expired: Depends on Qt 3.x deskutils/kompose||2013-07-26|Has expired: Depends on Qt 3.x deskutils/kooldock||2013-07-26|Has expired: Depends on Qt 3.x deskutils/krefty||2013-07-26|Has expired: Depends on Qt 3.x deskutils/krss||2013-07-26|Has expired: Depends on Qt 3.x deskutils/ksmoothdock||2013-07-26|Has expired: Depends on Qt 3.x deskutils/metabar||2013-07-26|Has expired: Depends on Qt 3.x deskutils/snotes||2013-07-26|Has expired: Depends on Qt 3.x devel/bouml||2013-07-26|Has expired: Depends on Qt 3.x devel/crossvc||2013-07-26|Has expired: Depends on Qt 3.x devel/dbus-qt3||2013-07-26|Has expired: Depends on Qt 3.x devel/esvn||2013-07-26|Has expired: Depends on Qt 3.x devel/kdesdk3||2013-07-26|Has expired: Depends on Qt 3.x devel/kodos||2013-07-26|Has expired: Depends on Qt 3.x devel/kprof||2013-07-26|Has expired: Depends on Qt 3.x devel/kscope||2013-07-26|Has expired: Depends on Qt 3.x devel/pikdev||2013-07-26|Has expired: Depends on Qt 3.x devel/qsa||2013-07-26|Has expired: Depends on Qt 3.x devel/qssl||2013-07-26|Has expired: Depends on Qt 3.x devel/subcommander||2013-07-26|Has expired: Depends on Qt 3.x editors/f4l||2013-07-26|Has expired: Depends on Qt 3.x editors/kate-plugins||2013-07-26|Has expired: Depends on Qt 3.x editors/klat||2013-07-26|Has expired: Depends on Qt 3.x editors/kxmleditor||2013-07-26|Has expired: Depends on Qt 3.x editors/rospell||2013-07-26|Has expired: Depends on Qt 3.x finance/eqonomize-kde3||2013-07-26|Has expired: Depends on Qt 3.x finance/kexchange||2013-07-26|Has expired: Depends on Qt 3.x finance/khacc||2013-07-26|Has expired: Depends on Qt 3.x finance/kmymoney2||2013-07-26|Has expired: Depends on Qt 3.x finance/qtstalker||2013-07-26|Has expired: Depends on Qt 3.x french/kde3-i18n||2013-07-26|Has expired: Depends on Qt 3.x ftp/kasablanca||2013-07-26|Has expired: Depends on Qt 3.x ftp/kbear||2013-07-26|Has expired: Depends on Qt 3.x ftp/kftpgrabber||2013-07-26|Has expired: Depends on Qt 3.x ftp/kpum||2013-07-26|Has expired: Depends on Qt 3.x games/atlantikdesigner||2013-07-26|Has expired: Depends on Qt 3.x games/blackjack||2013-07-26|Has expired: Depends on Qt 3.x games/easysok||2013-07-26|Has expired: Depends on Qt 3.x games/ggz-kde-client||2013-07-26|Has expired: Depends on Qt 3.x games/kamikaze||2013-07-26|Has expired: Depends on Qt 3.x games/kbilliards||2013-07-26|Has expired: Depends on Qt 3.x games/kdegames3||2013-07-26|Has expired: Depends on Qt 3.x games/kfreerings||2013-07-26|Has expired: Depends on Qt 3.x games/kmastermind||2013-07-26|Has expired: Depends on Qt 3.x games/knights||2013-07-26|Has expired: Depends on Qt 3.x games/kpicframer||2013-07-26|Has expired: Depends on Qt 3.x games/kpictorial||2013-07-26|Has expired: Depends on Qt 3.x games/kpuzzle||2013-07-26|Has expired: Depends on Qt 3.x games/ktritoc||2013-07-26|Has expired: Depends on Qt 3.x games/kwappen||2013-07-26|Has expired: Depends on Qt 3.x games/pinedit||2013-07-26|Has expired: Depends on Qt 3.x games/q15||2013-07-26|Has expired: Depends on Qt 3.x games/qnetchess||2013-07-26|Has expired: Depends on Qt 3.x games/spacehulk||2013-07-26|Has expired: Depends on Qt 3.x games/stroq||2013-07-26|Has expired: Depends on Qt 3.x games/taxipilot||2013-07-26|Has expired: Depends on Qt 3.x german/kde3-i18n||2013-07-26|Has expired: Depends on Qt 3.x german/kheisereg||2013-07-26|Has expired: Depends on Qt 3.x german/ksteak||2013-07-26|Has expired: Depends on Qt 3.x graphics/albumshaper||2013-07-26|Has expired: Depends on Qt 3.x graphics/amanith||2013-07-26|Has expired: Depends on Qt 3.x graphics/digikam-doc||2013-07-26|Has expired: Depends on Qt 3.x graphics/divxcalc||2013-07-26|Has expired: Depends on Qt 3.x graphics/ecg2png||2013-07-26|Has expired: Depends on Qt 3.x graphics/flip||2013-07-26|Has expired: Depends on Qt 3.x graphics/fractorama||2013-07-26|Has expired: Depends on Qt 3.x graphics/imgseek||2013-07-26|Has expired: Depends on Qt 3.x graphics/kalbum||2013-07-26|Has expired: Depends on Qt 3.x graphics/kbarcode||2013-07-26|Has expired: Depends on Qt 3.x graphics/kdegraphics3||2013-07-26|Has expired: Depends on Qt 3.x graphics/kipi-plugins||2013-07-26|Has expired: Depends on Qt 3.x graphics/kisomandel||2013-07-26|Has expired: Depends on Qt 3.x graphics/kooka||2013-07-26|Has expired: Depends on Qt 3.x graphics/kradview||2013-07-26|Has expired: Depends on Qt 3.x graphics/kuickshow||2013-07-26|Has expired: Depends on Qt 3.x graphics/landscape||2013-07-26|Has expired: Depends on Qt 3.x graphics/libkexif||2013-07-26|Has expired: Depends on Qt 3.x graphics/libqglviewer||2013-07-26|Has expired: Depends on Qt 3.x graphics/libx3dtk||2013-07-26|Has expired: Depends on Qt 3.x graphics/potracegui||2013-07-26|Has expired: Depends on Qt 3.x graphics/py-amanith||2013-07-26|Has expired: Depends on Qt 3.x graphics/showimg||2013-07-26|Has expired: Depends on Qt 3.x graphics/xenomorph||2013-07-26|Has expired: Depends on Qt 3.x hebrew/kde3-i18n||2013-07-26|Has expired: Depends on Qt 3.x hungarian/kde3-i18n||2013-07-26|Has expired: Depends on Qt 3.x irc/eggcreator||2013-07-26|Has expired: Depends on Qt 3.x irc/kmyirc||2013-07-26|Has expired: Depends on Qt 3.x irc/kwirc||2013-07-26|Has expired: Depends on Qt 3.x japanese/kde3-i18n||2013-07-26|Has expired: Depends on Qt 3.x korean/kde3-i18n||2013-07-26|Has expired: Depends on Qt 3.x lang/gambas||2013-07-26|Has expired: Depends on Qt 3.x lang/klogoturtle||2013-07-26|Has expired: Depends on Qt 3.x mail/kcheckgmail||2013-07-26|Has expired: Depends on Qt 3.x math/fung-calc||2013-07-26|Has expired: Depends on Qt 3.x math/koctave||2013-07-26|Has expired: Depends on Qt 3.x math/kseg||2013-07-26|Has expired: Depends on Qt 3.x math/pgcalc||2013-07-26|Has expired: Depends on Qt 3.x math/qwtplot3d||2013-07-26|Has expired: Depends on Qt 3.x math/rkward||2013-07-26|Has expired: Depends on Qt 3.x math/xgfe||2013-07-26|Has expired: Depends on Qt 3.x misc/gwenview-i18n||2013-07-26|Has expired: Depends on Qt 3.x misc/k3b-i18n||2013-07-26|Has expired: Depends on Qt 3.x misc/kaddressbook-plugins||2013-07-26|Has expired: Depends on Qt 3.x misc/katalog||2013-07-26|Has expired: Depends on Qt 3.x misc/kbfx||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-af||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-az||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-be||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-bg||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-bn||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-br||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-bs||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-ca||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-cs||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-csb||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-cy||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-da||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-el||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-en_GB||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-eo||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-es||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-et||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-eu||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-fa||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-fi||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-fy||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-ga||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-gl||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-hi||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-hr||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-is||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-it||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-kk||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-km||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-lt||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-lv||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-mk||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-mn||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-ms||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-nb||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-nds||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-nl||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-nn||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-pa||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-ro||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-rw||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-se||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-sk||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-sl||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-sr||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-sr_Latn||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-ss||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-sv||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-ta||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-te||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-tg||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-th||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-tr||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-uz||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-ven||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-wa||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-xh||2013-07-26|Has expired: Depends on Qt 3.x misc/kde3-i18n-zu||2013-07-26|Has expired: Depends on Qt 3.x misc/kdeaddons3||2013-07-26|Has expired: Depends on Qt 3.x misc/kdeedu3||2013-07-26|Has expired: Depends on Qt 3.x misc/kdehier||2013-07-26|Has expired: Depends on Qt 3.x misc/kdeutils3||2013-07-26|Has expired: Depends on Qt 3.x misc/kfile-plugins||2013-07-26|Has expired: Depends on Qt 3.x misc/kicker-applets||2013-07-26|Has expired: Depends on Qt 3.x misc/knewsticker-scripts||2013-07-26|Has expired: Depends on Qt 3.x misc/konq-plugins||2013-07-26|Has expired: Depends on Qt 3.x misc/krecipes||2013-07-26|Has expired: Depends on Qt 3.x misc/ksig||2013-07-26|Has expired: Depends on Qt 3.x misc/kwatch||2013-07-26|Has expired: Depends on Qt 3.x misc/renamedlgplugins||2013-07-26|Has expired: Depends on Qt 3.x multimedia/bmp-extra-plugins||2013-07-26|Has expired: Depends on Qt 3.x multimedia/dvdauthorwizard||2013-07-26|Has expired: Depends on Qt 3.x multimedia/grpplaylist||2013-07-26|Has expired: Depends on Qt 3.x multimedia/k9copy||2013-07-26|Has expired: Depends on Qt 3.x multimedia/kdemultimedia3||2013-07-26|Has expired: Depends on Qt 3.x multimedia/kmenc15||2013-07-26|Has expired: Depends on Qt 3.x multimedia/kmplayer||2013-07-26|Has expired: Depends on Qt 3.x multimedia/konverter||2013-07-26|Has expired: Depends on Qt 3.x multimedia/kplayer||2013-07-26|Has expired: Depends on Qt 3.x multimedia/ksubeditor||2013-07-26|Has expired: Depends on Qt 3.x multimedia/mandvd||2013-07-26|Has expired: Depends on Qt 3.x multimedia/noatun-plugins||2013-07-26|Has expired: Depends on Qt 3.x multimedia/qdvdauthor||2013-07-26|Has expired: Depends on Qt 3.x multimedia/subtitlecomposer||2013-07-26|Has expired: Depends on Qt 3.x multimedia/transkode||2013-07-26|Has expired: Depends on Qt 3.x multimedia/xine_artsplugin||2013-07-26|Has expired: Depends on Qt 3.x net/cphone||2013-07-26|Has expired: Depends on Qt 3.x net/kdenetwork3||2013-07-26|Has expired: Depends on Qt 3.x net/kiax||2013-07-26|Has expired: Depends on Qt 3.x net/knemo||2013-07-26|Has expired: Depends on Qt 3.x net/kphone||2013-07-26|Has expired: Depends on Qt 3.x net/krdesktop||2013-07-26|Has expired: Depends on Qt 3.x net/lanbrowsing||2013-07-26|Has expired: Depends on Qt 3.x net/pppload||2013-07-26|Has expired: Depends on Qt 3.x net/smb4k||2013-07-26|Has expired: Depends on Qt 3.x net/twinkle||2013-07-26|Has expired: Depends on Qt 3.x net-im/eva||2013-07-26|Has expired: Depends on Qt 3.x net-im/kmerlin||2013-07-26|Has expired: Depends on Qt 3.x net-im/kmess||2013-07-26|Has expired: Depends on Qt 3.x net-im/konverse||2013-07-26|Has expired: Depends on Qt 3.x net-im/kpopup||2013-07-26|Has expired: Depends on Qt 3.x net-im/sim-im||2013-07-26|Has expired: Depends on Qt 3.x net-im/sim-im-devel||2013-07-26|Has expired: Depends on Qt 3.x net-im/trix||2013-07-26|Has expired: Depends on Qt 3.x net-mgmt/tork||2013-07-26|Has expired: Depends on Qt 3.x net-p2p/kmldonkey||2013-07-26|Has expired: Depends on Qt 3.x net-p2p/ktorrent2||2013-07-26|Has expired: Depends on Qt 3.x net-p2p/qtella||2013-07-26|Has expired: Depends on Qt 3.x net-p2p/qtorrent||2013-07-26|Has expired: Depends on Qt 3.x news/klibido||2013-07-26|Has expired: Depends on Qt 3.x polish/kde3-i18n||2013-07-26|Has expired: Depends on Qt 3.x ports-mgmt/kports||2013-07-26|Has expired: Depends on Qt 3.x ports-mgmt/qtpkg||2013-07-26|Has expired: Depends on Qt 3.x portuguese/kde3-i18n||2013-07-26|Has expired: Depends on Qt 3.x portuguese/kde3-i18n-pt_BR||2013-07-26|Has expired: Depends on Qt 3.x print/cjk-lyx||2013-07-26|Has expired: Depends on Qt 3.x print/kcdlabel||2013-07-26|Has expired: Depends on Qt 3.x print/mapagi||2013-07-26|Has expired: Depends on Qt 3.x russian/kde3-i18n||2013-07-26|Has expired: Depends on Qt 3.x russian/ksocrat||2013-07-26|Has expired: Depends on Qt 3.x science/gsystem||2013-07-26|Has expired: Depends on Qt 3.x science/kmovisto||2013-07-26|Has expired: Depends on Qt 3.x science/kst||2013-07-26|Has expired: Depends on Qt 3.x security/klamav||2013-07-26|Has expired: Depends on Qt 3.x security/kopete-otr||2013-07-26|Has expired: Depends on Qt 3.x security/kovpn||2013-07-26|Has expired: Depends on Qt 3.x security/kssh||2013-07-26|Has expired: Depends on Qt 3.x security/qca-tls||2013-07-26|Has expired: Depends on Qt 3.x security/qtfw||2013-07-26|Has expired: Depends on Qt 3.x sysutils/kcpuload||2013-07-26|Has expired: Depends on Qt 3.x sysutils/kdeadmin3||2013-07-26|Has expired: Depends on Qt 3.x sysutils/keep||2013-07-26|Has expired: Depends on Qt 3.x sysutils/kgtk||2013-07-26|Has expired: Depends on Qt 3.x sysutils/kkbswitch||2013-07-26|Has expired: Depends on Qt 3.x sysutils/kkeyled||2013-07-26|Has expired: Depends on Qt 3.x sysutils/klaptopdaemon||2013-07-26|Has expired: Depends on Qt 3.x sysutils/kleansweep||2013-07-26|Has expired: Depends on Qt 3.x sysutils/klineakconfig||2013-07-26|Has expired: Depends on Qt 3.x sysutils/kmilo||2013-07-26|Has expired: Depends on Qt 3.x sysutils/knutclient||2013-07-26|Has expired: Depends on Qt 3.x sysutils/komparator||2013-07-26|Has expired: Depends on Qt 3.x sysutils/kshutdown||2013-07-26|Has expired: Depends on Qt 3.x sysutils/ksynaptics||2013-07-26|Has expired: Depends on Qt 3.x sysutils/lineak-kdeplugins||2013-07-26|Has expired: Depends on Qt 3.x sysutils/luma||2013-07-26|Has expired: Depends on Qt 3.x sysutils/pwg||2013-07-26|Has expired: Depends on Qt 3.x sysutils/spassgen||2013-07-26|Has expired: Depends on Qt 3.x textproc/kbedic||2013-07-26|Has expired: Depends on Qt 3.x textproc/skim||2013-07-26|Has expired: Depends on Qt 3.x textproc/uim-kde||2013-07-26|Has expired: Depends on Qt 3.x textproc/uim-qt||2013-07-26|Has expired: Depends on Qt 3.x ukrainian/kde3-i18n||2013-07-26|Has expired: Depends on Qt 3.x vietnamese/kde3-i18n||2013-07-26|Has expired: Depends on Qt 3.x www/kdewebdev||2013-07-26|Has expired: Depends on Qt 3.x www/khtml2png||2013-07-26|Has expired: Depends on Qt 3.x x11/kde-lite||2013-07-26|Has expired: Depends on Qt 3.x x11/kde3||2013-07-26|Has expired: Depends on Qt 3.x x11/kdebase3||2013-07-26|Has expired: Depends on Qt 3.x x11/kdelibs3||2013-07-26|Has expired: Depends on Qt 3.x x11/kdelibs3-nocups||2013-07-26|Has expired: Depends on Qt 3.x x11/oooqs2||2013-07-26|Has expired: Depends on Qt 3.x x11/xscreensaver-kde||2013-07-26|Has expired: Depends on Qt 3.x x11-clocks/kdetoys3||2013-07-26|Has expired: Depends on Qt 3.x x11-fm/krusader||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/baghira||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/kde-style-comix||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/kde-style-lipstik||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/kde-style-polyester||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/kde-style-tiblit||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/kde-windeco-activeheart||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/kde-windeco-crystal||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/kde-windeco-knifty||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/kde-windeco-neos||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/kde-windeco-smoothblend||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/kdeartwork3||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/kdmtheme||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/moodin||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/phase||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/polymer||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/qinx||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/qnxstyle||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/qt-bluecurve-theme||2013-07-26|Has expired: Depends on Qt 3.x x11-themes/qtcurve-kde3||2013-07-26|Has expired: Depends on Qt 3.x x11-toolkits/py-qt||2013-07-26|Has expired: Depends on Qt 3.x x11-toolkits/qscintilla||2013-07-26|Has expired: Depends on Qt 3.x x11-toolkits/qt33||2013-07-26|Has expired: No upstream activity since 2008; unmaintained x11-toolkits/qwt4||2013-07-26|Has expired: Depends on Qt 3.x x11-wm/bbconf||2013-07-26|Has expired: Depends on Qt 3.x x11-wm/kompmgr||2013-07-26|Has expired: Depends on Qt 3.x audio/artswrapper||2013-07-27|Depend on the expired audio/arts net/ns2|net/ns|2013-07-29|Duplicate ports merged x11-toolkits/libbonobouimm||2013-07-31|Not supported upstream anymore devel/libbonobomm||2013-07-31|Not supported upstream anymore devel/gio-fam-backend|devel/glib20|2013-07-31|Obsoleted by new functionality in glib20 mail/qmrtg||2013-08-02|Has expired: lacks an upstream source www/mediawiki118||2013-08-02|Has expired: Unmaintained upstream sysutils/googlog||2013-08-02|Has expired: no upstream project www/mod_macro24||2013-08-03|Has expired: part of Apache 2.4.6 and newer games/kaid||2013-08-07|Has expired: Does not fetch lang/q||2013-08-11|Has expired: Q-Lang is no longer supported. See lang/pure instead audio/q-audio||2013-08-11|Has expired: Q-Lang is no longer supported. See lang/pure instead graphics/q-graph||2013-08-11|Has expired: Q-Lang is no longer supported. See lang/pure instead devel/prettygo|devel/go-pretty|2013-08-17|Project was renamed www/moodle22||2013-08-20|Has expired: Unmaintained upstream www/w3m-m17n|www/w3m|2013-08-22|Unified to www/w3m www/w3m-m17n-img|www/w3m-img|2013-08-22|Unified to www/w3m-img security/sfs||2013-08-23|Has expired: Broken on FreeBSD 8 and newer mail/p5-Mail-CClient||2013-08-26|Has expired: Broken for more than 6 months net/slbd||2013-08-26|Has expired: Broken on FreeBSD 8 and newer comms/hso-kmod||2013-08-26|Has expired: Broken on FreeBSD 8 and newer lang/ldc-devel||2013-08-27|Has expired: Broken for more than 6 months www/mod_smooth_streaming||2013-08-27|Has expired: Broken for more than 6 months www/p5-Apache2-Scoreboard||2013-08-27|Has expired: Broken for more than 6 months multimedia/mp4split||2013-08-27|Has expired: Broken for more than 6 months net-mgmt/noc||2013-08-27|Has expired: Broken for more than 6 months sysutils/empower||2013-08-27|Has expired: Broken for more than 6 months emulators/xgngeo||2013-08-27|Has expired: Broken for more than 6 months graphics/geglmm||2013-08-27|Has expired: Broken for more than 6 months sysutils/libumberlog||2013-08-27|Has expired: Broken for more than 6 months net-p2p/nicotine-plus||2013-08-27|Has expired: Broken for more than 6 months palm/barry||2013-08-27|Has expired: Broken for more than 6 months x11-themes/kde-icons-noia-warm||2013-08-27|Has expired: Broken for more than 6 months news/lottanzb||2013-08-27|Has expired: Broken for more than 6 months textproc/xaira||2013-08-27|Has expired: Broken for more than 6 months graphics/f90gl||2013-08-27|Has expired: Broken for more than 6 months multimedia/linux-gspca-kmod||2013-08-27|Has expired: Broken for more than 6 months math/dislin||2013-08-27|Has expired: Broken for more than 6 months irc/smuxi||2013-08-27|Has expired: Broken for more than 6 months java/icedtea6-stubs||2013-08-27|Has expired: Broken for more than 6 months math/octave-forge-es||2013-08-27|Has expired: Broken for more than 6 months math/octave-forge-java||2013-08-27|Has expired: Broken for more than 6 months net/gatekeeper||2013-08-28|Has expired: Vulnerable for than 2 month audio/mp3towav-bundle||2013-08-28|Does not build with recent GNUstep biology/adun||2013-08-28|Does not build with recent GNUstep databases/gdl2||2013-08-28|Does not build with recent GNUstep databases/mylibrary||2013-08-28|Does not build with recent GNUstep deskutils/mywiki||2013-08-28|Does not build with recent GNUstep deskutils/toolbox||2013-08-28|Does not build with recent GNUstep devel/objcunit||2013-08-28|Does not build with recent GNUstep devel/objectivelib||2013-08-28|Does not build with recent GNUstep devel/projectmanager||2013-08-28|Does not build with recent GNUstep editors/codeeditor||2013-08-28|Does not build with recent GNUstep games/gridlock||2013-08-28|Does not build with recent GNUstep irc/talksoup||2013-08-28|Does not build with recent GNUstep math/matharray||2013-08-28|Does not build with recent GNUstep net/netclasses||2013-08-28|Does not build with recent GNUstep sysutils/burn||2013-08-28|Does not build with recent GNUstep www/webserver||2013-08-28|Does not build with recent GNUstep www/webservices||2013-08-28|Does not build with recent GNUstep x11-toolkits/gnustep-art||2013-08-28|Does not build with recent GNUstep x11-toolkits/gnustep-cairo|x11-toolkits/gnustep-back|2013-08-28|Removed deprecated back ends x11-toolkits/gnustep-xdps||2013-08-28|Does not build with recent GNUstep x11-toolkits/gtoolkit||2013-08-28|Does not build with recent GNUstep x11-toolkits/renaissance||2013-08-28|Does not build with recent GNUstep mail/pear-Horde_Imsp|databases/pear-Horde_Imsp|2013-08-28|Duplicate devel/g2c||2013-08-29|Has expired: Not supported upstream anymore devel/bugzilla3|devel/bugzilla42|2013-08-30|EOL: Please update to a supported version german/bugzilla3|german/bugzilla42|2013-08-30|EOL: Please update to a supported version japanese/bugzilla3|japanese/bugzilla42|2013-08-30|EOL: Please update to a supported version russian/bugzilla3|russian/bugzilla42|2013-08-30|EOL: Please update to a supported version net-im/licq-console||2013-08-30|No longer maintained upstream databases/py-migrate|databases/py-sqlalchemy-migrate|2013-09-01|Rename to reflect official project name lang/gdc||2013-09-01|Has expired: Broken for more than 6 months net-im/cli-msn||2013-09-01|Has expired: MSN Messenger service terminated 30 APR 2013 x11-toolkits/wxd||2013-09-01|Has expired: Depends on deprecated lang/gdc security/openvpn22||2013-09-01|Has expired: Please migrate to a newer OpenVPN version devel/dsss||2013-09-01|Has expired: Depends on expired lang/gdc graphics/qcamview||2013-09-01|Has expired: Broken on FreeBSD 8 and newer www/cacheboy15-devel||2013-09-01|Has expired: Broken on FreeBSD 8 and newer graphics/spcaview||2013-09-01|Has expired: Broken on FreeBSD 8 and newer comms/uticom||2013-09-01|Has expired: Broken on FreeBSD 8 and newer net/ipex||2013-09-01|Has expired: Broken on FreeBSD 8 and newer graphics/phpsview||2013-09-01|Has expired: Broken on FreeBSD 8 and newer misc/usbrh||2013-09-01|Has expired: Broken on FreeBSD 8 and newer net/atmsupport||2013-09-01|Has expired: Broken on FreeBSD 8 and newer comms/ib-kmod||2013-09-01|Has expired: Broken on FreeBSD 8 and newer www/helixplugin||2013-09-01|Has expired: Does not work with newer libxul deskutils/chmsee||2013-09-01|Has expired: Does not work with newer libxul www/moonshine||2013-09-01|Has expired: Does not work with newer libxul x11/ggiterm||2013-09-01|Has expired: Unmaintained and broken graphics/libggigcp||2013-09-01|Has expired: Unmaintained graphics/libggimisc||2013-09-01|Has expired: Unmaintained graphics/libggiwmh||2013-09-01|Has expired: Unmaintained devel/libgiigic||2013-09-01|Has expired: Unmaintained games/koth||2013-09-01|Has expired: Unmaintained www/p5-Catalyst-Plugin-Unicode-Encoding||2013-09-04|Has expired: This module now part of core Catalyst distribution databases/phpmyadmin35|databases/phpmyadmin|2013-09-04|Has expired: Has unresolved security problems: http://www.phpmyadmin.net/home_page/security/PMASA-2013-10.php devel/avr-gcc-3||2013-09-04|Maintaining a GCC 3.x for AVR is no longer useful math/libmath++||2013-09-05|Upstream disappeared and distfile is no longer available japanese/dvi2dvi||2013-09-05|Obsolete japanese/texfamily||2013-09-05|Obsolete japanese/texfamily-vfn2a||2013-09-05|Obsolete devel/py-astng|devel/py-astroid|2013-09-06|Project was renamed misc/kde4-l10n-csb||2013-09-10|No longer part of KDE4 misc/kde4-l10n-eo||2013-09-10|No longer part of KDE4 misc/kde4-l10n-fy||2013-09-10|No longer part of KDE4 misc/kde4-l10n-gu||2013-09-10|No longer part of KDE4 misc/kde4-l10n-kn||2013-09-10|No longer part of KDE4 misc/kde4-l10n-mai||2013-09-10|No longer part of KDE4 misc/kde4-l10n-mk||2013-09-10|No longer part of KDE4 misc/kde4-l10n-ml||2013-09-10|No longer part of KDE4 devel/deputy||2013-09-13|Obsolete textproc/liblinebreak|textproc/libunibreak|2013-09-14|Project was superseded by libunibreak sysutils/daemontools53|sysutils/daemontools|2013-09-16|sysutils/daemontools is more recent audio/ices0|audio/ices|2013-09-16|Unsupported version, consider using audio/ices irc/xchat1|irc/xchat|2013-09-16|Unsupported upstream, consider using irc/xchat japanese/xchat|irc/xchat|2013-09-16|Unsupported upstream, consider using irc/xchat www/autoindex|www/autoindex2|2013-09-16|Does not work with any of the supported PHP versions textproc/rotix||2013-09-20|Has expired: no longer maintained upstream devel/ptlib26|devel/ptlib|2013-09-20|Removed old version, update to new version and moved port net/opal3|net/opal|2013-09-20|Removed old version, update to new version and moved port net/ekiga|net-im/ekiga|2013-09-20|Removed old version, update to new version and moved port net/ekiga3|net-im/ekiga|2013-09-20|Removed old version, update to new version and moved port devel/py-elementtree||2013-09-23|ElementTree is a part of standard library since Python 2.5 textproc/fileshuffle||2013-09-23|Has expired: Does not work, use gshuf from sysutils/coreutils instead www/py-Products.kupu||2013-09-23|This port is not required since Plone 4.3 www/py-plone.app.kss||2013-09-23|This port is not required since Plone 4.3 devel/py-archetypes.kss||2013-09-23|This port is not required since Plone 4.3 devel/py-kss-core||2013-09-23|This port is not required since Plone 4.3 x11/libXtrans||2013-09-26|Has expired: Project is obsoleted, use x11/xtrans instead sysutils/libpcbsd||2013-09-26|Obsolete: Use sysutils/pcbsd-utils-qt4 instead sysutils/pbreg||2013-09-26|Obsolete: Use sysutils/pcbsd-utils instead ports-mgmt/pbi-manager||2013-09-26|Obsolete: Use sysutils/pcbsd-utils instead net/pcbsd-netmanager||2013-09-26|Obsolete: Use sysutils/pcbsd-utils-qt4 instead archivers/ruby-bz2||2013-10-01|Has expired: Does not work with Ruby 1.9 sysutils/puppet26|sysutils/puppet27|2013-10-01|Has expired: End of Life from April 2013. Upgrade to 2.7 or 3.x www/varnish2|www/varnish|2013-10-01|Has expired: No update since January 2011. Upgrade to Varnish 3 databases/dbh10|databases/dbh|2013-10-02|Outdated, not depended on, consider using databases/dbh audio/tracker||2013-10-02|No public distfiles available anymore chinese/joe2|chinese/joe|2013-10-02|Consider using chinese/joe sysutils/rdiff-backup10|sysutils/rdiff-backup|2013-10-02|Outdated, consider using a newer version java/jboss2|java/jboss72|2013-10-02|EOL upstream, consider using a newer version ftp/ncftp2|ftp/ncftp3|2013-10-02|Outdated, consider using a newer version irc/keitairc|irc/keitairc2|2013-10-02|Outdated, consider using a newer version java/netbeans55|java/netbeans|2013-10-02|Outdated, consider using a newer version java/netbeans61|java/netbeans|2013-10-02|Outdated, consider using a newer version devel/py-importlib||2013-10-02|Expired: Python 2.6 port will reach it's EoL upstream soon graphics/gkrellkam|graphics/gkrellkam2|2013-10-02|Outdated, consider using a newer version mail/gkrellmmailwatch|mail/gkrellmmailwatch2|2013-10-02|Outdated, consider using a newer version databases/memcached12|databases/memcached|2013-10-02|Unsupported upstream, consider using a newer version www/py-beautifulsoup30||2013-10-03|Outdated, consider using a newer version comms/umcs784||2013-10-03|Outdated, included in base system as umcs(4) graphics/libwpg01|graphics/libwpg|2013-10-04|Outdated, consider using a new version textproc/libwpd08|textproc/libwpd|2013-10-04|Outdated, consider using a new version net-mgmt/nrpe2|net-mgmt/nrpe|2013-10-04|Reflect the real portname cad/gwave||2013-10-05|Depends on guile-gtk which is EOLed x11-toolkits/guile-gtk||2013-10-05|EOLed upstream for very long textproc/gxmlviewer||2013-10-05|Depends on EOLed gnome1 comms/mlan|comms/mlan3|2013-10-05|Project is obsoleted by newer API graphics/gnomeiconedit||2013-10-05|Depends on EOLed gnome1 games/bombermaze||2013-10-05|Depends on EOLed gnome1 games/glife||2013-10-05|Depends on EOLed gnome1 emulators/visualos||2013-10-05|Depends on EOLed gnome1 editors/xmleditor||2013-10-05|Depends on EOLed gnome1 games/gnmm||2013-10-05|Depends on EOLed gnome1 games/gnomermind||2013-10-05|Depends on EOLed gnome1 comms/ghfaxviewer||2013-10-05|Depends on EOLed gnome1 devel/pharmacy||2013-10-05|Depends on EOLed gnome1 emulators/gsnes9x||2013-10-05|Depends on EOLed gnome1 graphics/electriceyes||2013-10-05|Depends on EOLed gnome1 graphics/frontline||2013-10-05|Depends on EOLed gnome1 mail/mmc||2013-10-05|Depends on EOLed gnome1 misc/misterproper||2013-10-05|Depends on EOLed gnome1 multimedia/gsubedit||2013-10-05|Depends on EOLed gnome1 net/gnome-vnc||2013-10-05|Depends on EOLed gnome1 news/grn||2013-10-05|Depends on EOLed gnome1 security/fpm||2013-10-05|Depends on EOLed gnome1 sysutils/xsu||2013-10-05|Depends on EOLed gnome1 security/fwbuilder-devel||2013-10-05|Appears not to be actively developed anymore devel/libglade||2013-10-07|Component of the obsolete gnome1 databases/gnome-db||2013-10-07|Component of the obsolete gnome1 databases/libgda||2013-10-07|Component of the obsolete gnome1 devel/gconf||2013-10-07|Component of the obsolete gnome1 devel/bonobo||2013-10-07|Component of the obsolete gnome1 devel/oaf||2013-10-07|Component of the obsolete gnome1 print/gnome-print||2013-10-07|Component of the obsolete gnome1 mail/mavbiff||2013-10-07|Obsoleted finance/gnofin||2013-10-07|Depends on EOLed gnome1 x11-toolkits/easygtk||2013-10-07|Depends on EOLed gnome1 graphics/gnomecanvas||2013-10-07|Component of the obsolete gnome1 www/p5-HTTP-GHTTP||2013-10-07|Depends on EOLed gnome1 libraries www/libghttp||2013-10-07|Component of the obsolete gnome1 deskutils/gworkspace-clipbook||2013-10-07|Replaced by tabbed shelf in GWorkspace audio/yamt||2013-10-07|Depends on EOLed gnome1 libraries astro/nova||2013-10-07|Development ceased 8 years ago, depends on some gnome1 libraries textproc/libxml++||2013-10-07|Component of the obsolete gnome1 devel/linux-f10-libglade|devel/linux-f10-libglade2|2013-10-07|Unused textproc/linux-f10-libxml|textproc/linux-f10-libxml2|2013-10-07|Unused www/moodle23||2013-10-08|Has expired: Unmaintained upstream sysutils/easypbi||2013-10-08|Obsolete: Use sysutils/pcbsd-utils-qt4 instead devel/valgrind-snapshot|devel/valgrind-devel|2013-10-09|Rename to -devel to follow port naming conventions devel/p5-doxygenfilter|devel/p5-Doxygen-Filter-Perl|2013-10-09|Project has been taken over by new developer and renamed audio/ruby-vorbisfile||2013-10-11|Has expired: Does not work with Ruby 1.9 audio/ruby-xmms||2013-10-11|Has expired: Does not work with Ruby 1.9 databases/ruby-interbase||2013-10-11|Has expired: Does not work with Ruby 1.9 databases/ruby-bdb1||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/ruby-fam||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/ruby-rcov||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/ruby-rudl||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/ruby-gemfinder||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/ruby-sysvipc||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/rubygem-sdl||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/rubygem-ncurses||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/rubygem-parsetree||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/ruby-sexp||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/rubygem-getopt-declare||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/ruby-slang||2013-10-11|Has expired: Does not work with Ruby 1.9 japanese/ruby-slang||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/ruby-gettext||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/ruby-jttui||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/ruby-mmap||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/ruby-racc||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/rubygem-rparsec||2013-10-11|Has expired: Does not work with Ruby 1.9 devel/rubygem-zoom||2013-10-11|Has expired: Does not work with Ruby 1.9 games/ruby-exmars||2013-10-11|Has expired: Does not work with Ruby 1.9 graphics/ruby-pgplot||2013-10-11|Has expired: Does not work with Ruby 1.9 graphics/rubygem-turing||2013-10-11|Has expired: Does not work with Ruby 1.9 japanese/ruby-chasen||2013-10-11|Has expired: Does not work with Ruby 1.9 japanese/ruby-gyokuro||2013-10-11|Has expired: Does not work with Ruby 1.9 japanese/ruby-rdic||2013-10-11|Has expired lang/ruby-mode.el||2013-10-11|Has expired: Does not work with Ruby 1.9 misc/rubygem-ohcount||2013-10-11|Has expired: Does not work with Ruby 1.9 net-im/rubygem-xmpp4r||2013-10-11|Has expired: Does not work with Ruby 1.9 security/ruby-acl||2013-10-11|Has expired: Does not work with Ruby 1.9 textproc/ruby-xslt||2013-10-11|Has expired: Does not work with Ruby 1.9 textproc/ruby-erbscan||2013-10-11|Has expired: Does not work with Ruby 1.9 textproc/ruby-mwdom||2013-10-11|Has expired: Does not work with Ruby 1.9 textproc/ruby-xmlscan-old||2013-10-11|Has expired: Does not work with Ruby 1.9 textproc/rubygem-formosa||2013-10-11|Has expired: Does not work with Ruby 1.9 textproc/rubygem-htmltools||2013-10-11|Has expired: Does not work with Ruby 1.9 www/ruby-cruisecontrolrb||2013-10-11|Has expired: Does not work with Ruby 1.9 www/rubygem-rubyfulsoup||2013-10-11|Has expired: Does not work with Ruby 1.9 x11/ruby-gtktrayicon||2013-10-11|Has expired: Does not work with Ruby 1.9 net/ngrep-lib||2013-10-11|Obsoleted www/node04||2013-10-11|Has expired: Unsupported upstream, not compatible with current www/node06||2013-10-11|Has expired: Unsupported upstream, not compatible with current math/matrices||2013-10-12|Has expired: Unmaintained upstream games/nethack33-gnome|games/nethack33|2013-10-13|Has expired: Uses deprecated gnome 1.x libraries games/nethack34-gnome|games/nethack34|2013-10-13|Has expired: Uses deprecated gnome 1.x libraries emulators/linux-ePSXe||2013-10-13|Removed, uses Linux GTK1 libraries emulators/linux-peops-spu||2013-10-13|Removed, uses Linux GTK1 libraries math/linux-relview||2013-10-13|Removed, uses Linux GTK1 libraries science/ovt||2013-10-14|Depends on the EOLed vtk4 math/vtk-data||2013-10-14|Deprecated consider using vtk5 math/vtk-examples||2013-10-14|Deprecated consider using vtk5 math/vtk-headers||2013-10-14|Deprecated consider using vtk5 math/vtk-java||2013-10-14|Deprecated consider using vtk5 math/vtk-python||2013-10-14|Deprecated consider using vtk5 math/vtk-tcl||2013-10-14|Deprecated consider using vtk5 science/mayavi||2013-10-14|Depends on the EOLed vtk4 www/httpgrabber||2013-10-14|Depended on net/ngrep-lib security/stem|security/py-stem|2013-10-14|This is a Python library sysutils/gupsc||2013-10-15|Depends on the obsolete gnome1 net/diradmin||2013-10-15|Depends on the obsolete gnome1 devel/hypersrc||2013-10-15|Depends on the obsolete gnome1 x11-themes/gnome-look||2013-10-15|Component of the obsolete gnome1 x11-themes/thinice||2013-10-15|Component of the obsolete gnome1 x11-themes/gtk-engines||2013-10-15|Component of the obsolete gnome1 x11-themes/gtk-engines-collection||2013-10-15|Component of the obsolete gnome1 devel/getxml||2013-10-15|Depends on EOLed libxml1 textproc/xls2xml||2013-10-15|Depends on EOLed libxml1 textproc/cole||2013-10-15|Upstream has disappeared www/rubygem-staticmatic||2013-10-15|Has expired: No longer maintained upstream www/ruby-nora||2013-10-15|Has expired: Does not work with Ruby 1.9 www/aswiki||2013-10-15|Removed textproc/ruby-amrita||2013-10-15|Has expired: Does not work with Ruby 1.9 security/flowtag||2013-10-15|Has expired: Does not work with Ruby 1.9 lang/ruby-lua4||2013-10-15|Has expired: Does not work with Ruby 1.9 dns/dnsdoctor||2013-10-15|Has expired: Does not work with Ruby 1.9 devel/py-psyco||2013-10-15|Has expired: only builds with lang/python26 x11-toolkits/ruby-tk||2013-10-15|Has expired: Does not work with Ruby 1.9 emulators/dolphin-emu-devel|emulators/dolphin-emu|2013-10-16|Has reached stable quality audio/akode||2013-10-17|Removed: Dependency of KDE 3.x audio/akode-plugins-ffmpeg||2013-10-17|Removed: Dependency of KDE 3.x audio/akode-plugins-jack||2013-10-17|Removed: Dependency of KDE 3.x audio/akode-plugins-mpc||2013-10-17|Removed: Dependency of KDE 3.x audio/akode-plugins-mpeg||2013-10-17|Removed: Dependency of KDE 3.x audio/akode-plugins-oss||2013-10-17|Removed: Dependency of KDE 3.x audio/akode-plugins-pulseaudio||2013-10-17|Removed: Dependency of KDE 3.x audio/akode-plugins-resampler||2013-10-17|Removed: Dependency of KDE 3.x audio/akode-plugins-xiph||2013-10-17|Removed: Dependency of KDE 3.x german/bugzilla|german/bugzilla40|2013-10-17|Reflect PORTNAME japanese/bugzilla|japanese/bugzilla40|2013-10-17|Reflect PORTNAME russian/bugzilla|russian/bugzilla40|2013-10-17|Reflect PORTNAME x11/silo||2013-10-18|Has expired: Upstream has disappeared devel/pear-PHPUnit|devel/pear-PHPUnit3|2013-10-18|Removed, EOLed upstream devel/pear-PHPUnit2|devel/pear-PHPUnit3|2013-10-18|Removed, EOLed upstream multimedia/ffmpeg2|multimedia/ffmpeg|2013-10-19|Use multimedia/ffmpeg instead mail/qmailadmin-devel|mail/qmailadmin|2013-10-19|Use mail/qmailadmin instead korean/php_doc||2013-10-19|Manual in this language was removed graphics/linux-panorama-tools||2013-10-21|Depends on EOLed linux-f10-png10 graphics/linux-f10-png10||2013-10-21|Removed, EOLed upstream net/p5-SOAP-Lite-060|net/p5-SOAP-Lite|2013-10-21|Obsoleted devel/rubygem-ruby-debug-base||2013-10-21|Has expired: Does not work with Ruby 1.9 devel/rubygem-linecache||2013-10-21|Has expired: Does not work with Ruby 1.9 devel/rubygem-rascut||2013-10-21|Has expired: Does not work with Ruby 1.9 devel/rubygem-ruby-debug-ide||2013-10-21|Has expired: Does not work with Ruby 1.9 devel/rubygem-ruby-debug||2013-10-21|Has expired: Does not work with Ruby 1.9 japanese/gorua||2013-10-21|Has expired: Does not work with Ruby 1.9 x11-toolkits/ruby-gtk||2013-10-21|Has expired: Does not work with Ruby 1.9 astro/boinc-setiathome-enhanced|astro/boinc-setiathome-v7|2013-10-21|Removed: Project is switching, use astro/boinc-setiathome-v7 instead; broken on 10.0 multimedia/ffmpeg-devel|multimedia/ffmpeg|2013-10-21|Use multimedia/ffmpeg instead lang/ruby18|lang/ruby19|2013-10-22|Has expired: Please use lang/ruby19 www/rubygem-mongrel_cluster||2013-10-22|Has expired: Does not work with Ruby 1.9 www/rubygem-mongrel||2013-10-22|Removed www/rubygem-rails-app-installer||2013-10-22|Has expired: Does not work with Ruby 1.9 www/typo||2013-10-22|Has expired: Does not work with Ruby 1.9 graphics/ruby-opengl||2013-10-25|Has expired: Does not work with Ruby 1.9 multimedia/ffmpeg1|multimedia/ffmpeg|2013-10-27|Use multimedia/ffmpeg instead devel/rubygem-yajl-ruby077||2013-10-29|Removed lang/lua4||2013-10-31|EOLed upstream lang/tolua4||2013-10-31|EOLed upstream net-im/amsn||2013-10-31|Has expired: Primary MSN Messenger service terminated 30 APR 2013 net-im/jabber-pymsn||2013-10-31|Has expired: Primary MSN Messenger service terminated 30 APR 2013 net-im/msn-proxy||2013-10-31|Has expired: Primary MSN Messenger service terminated 30 APR 2013 net-im/p5-Net-MSN||2013-10-31|Has expired: Primary MSN Messenger service terminated 30 APR 2013 net-im/p5-POE-Component-Client-MSN||2013-10-31|Has expired: Primary MSN Messenger service terminated 30 APR 2013 net-im/pidgin-msn-pecan||2013-10-31|Has expired: Primary MSN Messenger service terminated 30 APR 2013 net-im/py-msnp||2013-10-31|Has expired: Primary MSN Messenger service terminated 30 APR 2013 net-im/pymsn||2013-10-31|Has expired: Primary MSN Messenger service terminated 30 APR 2013 net-im/tmsnc||2013-10-31|Has expired: Primary MSN Messenger service terminated 30 APR 2013 mail/squirrelmail-postfixadmin-plugin|mail/postfixadmin|2013-11-01|Has expired: Now distributed with postfixadmin lang/dragonegg46||2013-11-03|Has expired: Upgrade to dragonegg46-33 or dragonegg47-33 sysutils/mktool||2013-11-03|Has expired databases/ruby-memcache||2013-11-03|Has expired: Development has been abandoned upstream deskutils/blogtk||2013-11-03|Has expired: This is dead upstream and is no longer being maintained devel/ruby-io-reactor||2013-11-03|Has expired: Does not work with Ruby 1.9 textproc/jakarta-poi|textproc/apache-poi|2013-11-04|Replaced with apache-poi net-im/qutim||2013-11-05|Has expired: Old version, a new one needs to be ported from scratch textproc/gtkdiff||2013-11-05|Has expired: Gnome1 EOLed by upstream for a while net-p2p/libtorrent-rasterbar-16|net-p2p/libtorrent-rasterbar|2013-11-06|Moved to net-p2p/libtorrent-rasterbar since it's a stable version net-p2p/libtorrent-rasterbar-16-python|net-p2p/libtorrent-rasterbar-python|2013-11-06|Moved to net-p2p/libtorrent-rasterbar-python since it's a stable version devel/ORBit||2013-11-07|Has expired: EOLed upstream for very long x11/gnome-libs||2013-11-07|Has expired: EOLed upstream for very long textproc/stardict2||2013-11-07|Has expired: Newer version available in ports: textproc/stardict3 devel/pure-stlvec|devel/pure-stllib|2013-11-07|Removed: Use devel/pure-stllib instead textproc/lexxia||2013-11-07|Removed no public distfile available anymore textproc/docproj-nojadetex||2013-11-07|Removed textproc/p5-XML-Hadler-HTMLWriter|textproc/p5-XML-Handler-HTMLWriter|2013-11-07|Removed games/frozenbubble|games/frozen-bubble|2013-11-08|Renamed to match upstream naming biology/dotter|biology/seqtools|2013-11-10|Replaced with biology/seqtools games/nil||2013-11-11|Removed: long unmaintained, fails to build games/windstille||2013-11-12|Has expired: Unplayable, development ceased games/intensityengine||2013-11-12|Has expired: Unplayable, main server down, development ceased games/tmw|games/manaplus|2013-11-12|Replaced with games/manaplus graphics/mesagl||2013-11-14|Old unmaintained version. Use graphics/libosmesa instead editors/xxe||2013-11-15|Has expired: XXE becomes unfetchable every 3-4 months as distfile is replaced with new version. This high-maintenance port requires a maintainer to avoid removal editors/xml2rfc-xxe||2013-11-15|Has expired: Depends on editors/xxe, which is due to be removed due to lack of maintainer devel/perltidy|devel/p5-Perl-Tidy|2013-11-15|Renamed to match upstream naming net/p5-Script-isAperlScript|devel/p5-Script-isAperlScript|2013-11-15|Duplicate math/vtk|math/vtk5|2013-11-17|Removed, EOLed net-im/decibel||2013-11-17|Has expired: Deprecated and unsupported upstream for many years, not used by anything databases/postgresql-libpq++||2013-11-17|Has expired: Not maintained upstream for 10+ years audio/gqmpeg-devel||2013-11-17|Removed, no active development for more than 8 years graphics/gqview-devel||2013-11-17|Removed, no active development for more than 8 years textproc/stardict2-dictd_mova|textproc/stardict-dictd_mova|2013-11-17|Renamed textproc/stardict2-quick|textproc/stardict-quick|2013-11-17|Renamed security/ksecrets||2013-11-17|Defunct x11-toolkits/libgnomeuimm|x11-toolkits/libgnomeuimm26|2013-11-18|Older version; has no consumers in the ports tree devel/libglademm|devel/libglademm24|2013-11-18|Older version; has no consumers in the ports tree graphics/libgnomecanvasmm|graphics/libgnomecanvasmm26|2013-11-18|Older version; has no consumers in the ports tree x11/libgnomemm|x11/libgnomemm26|2013-11-18|Older version; has no consumers in the ports tree devel/gconfmm|devel/gconfmm26|2013-11-18|Older version; has no consumers in the ports tree sysutils/dircomp||2013-11-18|Removed: unmaintained and depends on expired devel/libXGP sysutils/iextract||2013-11-18|Removed: unmaintained and depends on expired devel/libYGP devel/libXGP||2013-11-18|Has expired: Broken for more than 6 months deskutils/google-gadgets||2013-11-18|Has expired: Broken for more than 6 months palm/synce-trayicon||2013-11-18|Has expired: Broken for more than 6 months security/linux-pam-docs||2013-11-18|Has expired: Broken for more than 6 months net-p2p/mooseekd||2013-11-18|Has expired: Broken for more than 6 months textproc/p5-Lucene||2013-11-18|Has expired: Broken for more than 6 months net-mgmt/zenpack-dellmonitor||2013-11-18|Has expired: Broken for more than 6 months x11-wm/fbpager||2013-11-18|Has expired: Broken for more than 6 months net/hf6to4||2013-11-18|Has expired: Broken for more than 6 months x11-themes/kde-icons-exquisite||2013-11-18|Has expired: Broken for more than 6 months x11-themes/kde-icons-marbles-translucent||2013-11-18|Has expired: Broken for more than 6 months security/dissembler||2013-11-18|Has expired: Broken for more than 6 months, upstream disappeared net-mgmt/zenpack-apachemonitor||2013-11-18|Has expired: Broken for more than 6 months textproc/rst.el||2013-11-18|Has expired: Broken for more than 6 months net-mgmt/zenpack-ntpmonitor||2013-11-18|Has expired: Broken for more than 6 months x11-themes/kde-icons-steel||2013-11-18|Has expired: Broken for more than 6 months databases/drizzle||2013-11-18|Has expired: Broken for more than 6 months devel/p5-File-Lock||2013-11-18|Has expired: Broken for more than 6 months devel/valide||2013-11-18|Has expired: Broken for more than 6 months databases/gomysql||2013-11-18|Has expired: Broken for more than 6 months databases/p5-DBZ_File||2013-11-18|Has expired: Broken for more than 6 months devel/monodevelop-vala||2013-11-18|Has expired: Broken for more than 6 months devel/gonzui||2013-11-18|Has expired: Broken for more than 6 months devel/monodevelop-java||2013-11-18|Has expired: Broken for more than 6 months lang/objc||2013-11-18|Has expired: Broken for more than 6 months devel/klee||2013-11-18|Has expired: Broken for more than 6 months devel/simulavr||2013-11-18|Has expired: Broken for more than 6 months japanese/mobileimap||2013-11-18|Has expired: Broken for more than 6 months devel/libYGP||2013-11-18|Has expired: Broken for more than 6 months devel/monodevelop-python||2013-11-18|Has expired: Broken for more than 6 months devel/lua50-app||2013-11-18|Removed, lua50 is EOLed devel/lua50-dfui||2013-11-18|Removed, lua50 is EOLed devel/lua50-filename||2013-11-18|Removed, lua50 is EOLed devel/lua50-gettext||2013-11-18|Removed, lua50 is EOLed devel/lua50-posix||2013-11-18|Removed, lua50 is EOLed devel/lua50-pty||2013-11-18|Removed, lua50 is EOLed lang/tolua++50||2013-11-18|Removed, lua50 is EOLed lang/tolua50||2013-11-18|Removed, lua50 is EOLed net/lua50-luasocket||2013-11-18|Removed, lua50 is EOLed devel/lua50-compat51||2013-11-18|Removed, lua50 is EOLed lang/lua50|lang/lua|2013-11-18|Removed, lua50 is EOLed security/squidclamav|www/squidclamav|2013-11-18|Has expired: Obsolete and broken with clang, use www/squidclamav instead devel/rubygem-ripper||2013-11-20|Removed: it is only for Ruby 1.8 which is removed already editors/mode-info||2013-11-20|Has expired: Misbuilding since 2004, not maintained since 2008 devel/netbsd-pkgsrc-mk-files||2013-11-20|Has expired: Imported for devel/mk-configure but no longer required net/ptpd|net/ptpd2|2013-11-20|Protocol and software no longer supported audio/gstreamer1-plugins-celt||2013-11-20|Removed, audio/gstreamer1-plugins-opus can be used as replacement math/p5-MatrixReal|math/p5-Math-MatrixReal|2013-11-22|Rename to match upstream naming lang/gcc42|lang/gcc|2013-11-23|Superseded by GCC 4.6 or later devel/p5-IO||2013-11-23|Removed: newer versions are included in all supported Perl releases www/mod_wsgi|www/mod_wsgi2|2013-11-24|Rename to match version net/ftelnetd||2013-11-25|Has expired: Unfetchable due to parked MASTER_SITES games/BillardGL||2013-11-25|Has expired: Unplayable, development ceased sysutils/rsyslog6-pgsql||2013-11-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6-relp||2013-11-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6-gnutls||2013-11-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6-rfc3195||2013-11-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6-gssapi||2013-11-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6||2013-11-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6-snmp||2013-11-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6-mysql||2013-11-25|Has expired: Use sysutils/rsyslog7 sysutils/rsyslog6-dbi||2013-11-25|Has expired: Use sysutils/rsyslog7 www/trac-gitplugin||2013-11-25|Removed: this plugin has been included in the Trac 1.0 distribution audio/mpc|audio/musicpc|2013-11-26|Renamed to avoid conflict with math/mpc deskutils/q4wine|emulators/q4wine|2013-11-26|Move to better category devel/p5-MooseX-ChainedAccessors||2013-11-27|Has expired: Marked as deprecated upstream devel/py-distribute|devel/py-setuptools|2013-11-27|Replaced with setuptools devel/zmq-devel|net/libzmq3|2013-11-28|Rename according to upstream and move to more suitable category devel/czmq|net/czmq|2013-11-29|Move to a more suitable category and with other libzmq ports lang/ruby-reference||2013-11-29|Removed: does not contain up-to-date ruby reference, upstream has disappeared audio/gnump3d||2013-11-30|Has expired: Development has been abandoned upstream audio/rubygem-ogginfo|audio/rubygem-ruby-ogginfo|2013-11-30|Rename to match upstream naming x11-fm/xnc||2013-12-01|Has expired: Latest release from 2005, upstream disappeared, does not build audio/liteamp||2013-12-01|Has expired: Dead upstream since 2004, does not build with clang net-im/tapioca-qt||2013-12-01|Has expired: Unmaintained upstream since 2007, not used by anything net-im/telepathy-qt|net-im/telepathy-qt4|2013-12-01|Has expired: Unmaintained upstream since 2007, use net-im/telepathy-qt4 x11-toolkits/linux-f10-gtk||2013-12-01|Has expired: GTK1 is deprecated net-im/linux-ymessenger||2013-12-01|Has expired: Depends on deprecated Linux GTK1 emulators/linux-pete-mesagpu||2013-12-01|Has expired: Depends on deprecated Linux GTK1 emulators/linux-pete-xgl2gpu||2013-12-01|Has expired: Depends on deprecated Linux GTK1 emulators/linux-peops-softgpu||2013-12-01|Has expired: Depends on deprecated Linux GTK1 finance/eqonomize-kde4||2013-12-01|Has expired: No upstream releases since 2008, does not build on FreeBSD 10 and 11 comms/uhso-kmod||2013-12-01|Has expired: included in base system on all supported releases deskutils/ecru||2013-12-01|Has expired: No longer maintained upstream editors/gphpedit||2013-12-01|Has expired: No longer maintained upstream irc/inspircd12|irc/inspircd|2013-12-01|Has expired: No upstream support; known vulnerable. Please use irc/inspircd graphics/py-clutter||2013-12-01|Has expired: Broken for more than 6 months graphics/py-clutter-gtk||2013-12-01|Has expired: depends on expired graphics/py-clutter devel/zmq|net/libzmq2|2013-12-05|Rename according to upstream and move to more suitable category devel/rubygem-ruby-statsd|devel/rubygem-statsd|2013-12-05|Rename to match upstream naming x11-themes/lila-xfwm4||2013-12-05|Has expired: Upstream development dead science/omnetpp||2013-12-05|Has expired: depends on expired textproc/libxml textproc/libxml||2013-12-05|Has expired: No release since 2002, no support from upstream deskutils/taskjuggler|deskutils/rubygem-taskjuggler|2013-12-05|Rename to match our rubygem- port naming www/clickheat||2013-12-07|Has expired: No more activity since 2011 security/rarcrack||2013-12-08|Has expired: Not active since several years java/subversion-java|java/java-subversion|2013-12-08|Rename to reflect subversion child port naming scheme games/flare|games/flare-game|2013-12-10|Flare port was split into engine and game counterparts, as upstream did security/opieprint||2013-12-15|Has expired: No more active upstream security/bubblegum||2013-12-15|Has expired: No more active upstream security/snortsms||2013-12-15|Has expired: Not active since several years sysutils/hammerhead||2013-12-15|Has expired: Development no more active net-p2p/libtorrent-rasterbar-15-python||2013-12-15|Has expired: Unusable, development ceased graphics/openexr_ctl||2013-12-15|Has expired: Now distributed with ampasCTL-1.5 net-p2p/libtorrent-rasterbar-15||2013-12-16|Has expired: Unusable, development ceased x11-fonts/ppantsfonts||2013-12-20|Has expired: Broken for more than 6 months x11-toolkits/gtksourceview-sharp||2013-12-20|Has expired: Depends on expired devel/mono-tools devel/mono-tools||2013-12-20|Has expired: Broken for more than 6 months textproc/p5-XML-SAXDriver-Sablotron||2013-12-20|Has expired: Depends on expired textproc/p5-XML-Sablotron textproc/p5-XML-Sablotron||2013-12-20|Has expired: Broken for more than 6 months net/freeswitch-core||2013-12-20|Has expired: Broken for more than 6 months misc/freeswitch-pizzademo||2013-12-20|Has expired: Depends on expired net/freeswitch-core misc/freeswitch-scripts||2013-12-20|Has expired: Depends on expired net/freeswitch-core www/p5-HTML-Webmake||2013-12-20|Has expired: Depends on expired textproc/p5-XML-Sablotron games/blue|games/bluemoon|2013-12-21|Rename to match upstream naming devel/ruby-cvs||2013-12-22|Has expired: Broken for more than 6 months devel/hs-reactive||2013-12-22|Has expired: Broken for more than 6 months databases/rubygem-delayed_job_data_mapper||2013-12-22|Has expired: Broken for more than 6 months graphics/xmagv||2013-12-22|Has expired: Broken for more than 6 months lang/slib-gauche||2013-12-22|Has expired: Broken for more than 6 months graphics/f-spot||2013-12-22|Has expired: Broken for more than 6 months sysutils/linux-megamgr||2013-12-22|Has expired: Broken for more than 6 months games/linux-savage-samuraiwars||2013-12-22|Has expired: Broken for more than 6 months devel/hs-DeepArrow||2013-12-22|Has expired: Broken for more than 6 months converters/py-svglib||2013-12-22|Has expired: Broken for more than 6 months converters/p5-Unicode-Lite||2013-12-22|Has expired: Broken for more than 6 months mail/squirrelmail-calendar_sql_backend-plugin||2013-12-22|Has expired: Broken for more than 6 months games/xkobo||2013-12-22|Has expired: Broken for more than 6 months games/quake3-rq3||2013-12-22|Has expired: Broken for more than 6 months math/fbm||2013-12-22|Has expired: No new release since 2004, new supported upstream deskutils/libopensync-plugin-python-devel||2013-12-22|Has expired: Broken for more than 6 months deskutils/libopensync-plugin-synce-devel||2013-12-22|Removed, unmaintained, depends on deskutils/libopensync-plugin-python-devel net-im/libmsn||2013-12-22|Has expired: Primary MSN Messenger service terminated 30 APR 2013 lang/clang||2013-12-22|Has expired: Migrate to lang/clang32 or newer math/freemat-mpi||2013-12-23|Obsolete since FreeMat 3.0 devel/py-pmock||2013-12-27|Does not work with python 2.6 and beyond devel/ncurses-devel|devel/ncurses|2013-12-28|Regular ncurses ports is more recent databases/mird||2013-12-28|Has expired: No longer maintained upstream security/dazuko||2013-12-31|Has expired: Currently, the project has not an active development and maintainer mail/p5-Mail-SPF-Query||2013-12-31|Has expired: Use mail/p5-Mail-SPF instead x11-fonts/etlfonts||2013-12-31|Has expired: master site gone net/gateway6||2013-12-31|Has expired: Unsupported upstream, consider using net/gogoc misc/bibletime-devel|misc/bibletime|2013-12-31|Has expired: use misc/bibletime multimedia/linux-ov511-kmod||2013-12-31|Removed: broken and only for FreeBSD 6.x and 7.x net-mgmt/unifi|net-mgmt/unifi3|2014-01-01|Rename to unifi3; unifi2 is coming to ports tree as well net/pypvm||2014-01-01|Has expired: Dead upstream and suspected that there are no users of port www/mawstats||2014-01-01|Has expired: Upstream development dead, use www/[j]awstats instead devel/p5-Dialog|devel/p5-UI-Dialog|2014-01-01|Has expired textproc/referrercop||2014-01-01|Has expired: distfile unfetchable www/notftp||2014-01-01|Has expired: distfile unfetchable www/mod_lisp2||2014-01-01|Has expired: distfile unfetchable irc/xchat-gnome||2014-01-02|Has expired: broken and no release since 2009 sysutils/rubygem-rubyimpi|sysutils/rubygem-rubyipmi|2014-01-02|Renamed www/codeigniter17|www/codeigniter|2014-01-04|Unsupported upstream, consider using newer version net-im/xfce4-messenger-plugin||2014-01-04|Has expired: Deprecated and no update for 7 years multimedia/xfce4-media|multimedia/xfce4-parole|2014-01-04|Has expired: Upstream development dead, use multimedia/xfce4-parole instead devel/py-gevent-zeromq|devel/py-pyzmq|2014-01-06|Has expired: devel/py-pyzmq has gevent support built in net/erlyvideo||2014-01-06|Has expired: Development of erlyvideo is abandoned upstream. Use flussonic instead devel/qt4-declarative|x11-toolkits/qt4-declarative|2014-01-06|Moved to unify with Qt 5 devel/qt4-qtestlib|devel/qt4-testlib|2014-01-06|Renamed to unify with Qt 5 x11/qt4-opengl|graphics/qt4-opengl|2014-01-06|Moved to unify with Qt 5 graphics/wings-devel|graphics/wings|2014-01-07|Obsoleted by the main port devel/llvm|devel/llvm32|2014-01-08|Has expired: Migrate to devel/llvm32 or newer devel/reflex|textproc/reflex|2014-01-08|Duplicate devel/hs-hat||2014-01-09|Upstream has vanished devel/hs-hdoc||2014-01-09|Removed devel/hs-idoc||2014-01-09|Removed x11-toolkits/hs-frantk||2014-01-09|Outdated and bitrotted devel/lua-filename||2014-01-10|Abandonware archivers/xz||2014-01-12|Included in base system on all supported releases lang/python26|lang/python27|2014-01-13|Python 2.6 is now end-of-life, please migrate to lang/python27 sysutils/lavaps||2014-01-14|Abandonware, segfaults www/mod_authnz_external|www/mod_authnz_external22|2014-01-14|Port was renamed to reflect the supported Apache version games/deng|games/doomsday|2014-01-16|Renamed to follow upstream naming misc/sword17|misc/sword|2014-01-16|Has expired: use misc/sword databases/postgis||2014-01-17|Has expired: EOLed upstream textproc/redland-bindings-python||2014-01-19|Use textproc/redland-bindings directly instead emulators/seabios-devel||2014-01-19|Has expired: Outdated, no longer needed, broken on 10+ cad/salome||2014-01-24|Has expired: depends on expired cad/salome-kernel cad/salome-netgenplugin||2014-01-24|Has expired: depends on expired cad/salome-kernel cad/salome-jobmanager||2014-01-24|Has expired: depends on expired cad/salome-kernel cad/salome-visu||2014-01-24|Has expired: depends on expired cad/salome-kernel cad/salome-kernel||2014-01-24|Has expired: does not configure cad/salome-multipr||2014-01-24|Has expired: depends on expired cad/salome-kernel cad/salome-smesh||2014-01-24|Has expired: depends on expired cad/salome-kernel cad/salome-gui||2014-01-24|Has expired: depends on expired cad/salome-kernel cad/salome-yacs||2014-01-24|Has expired: depends on expired cad/salome-kernel cad/salome-med||2014-01-24|Has expired: depends on expired cad/salome-kernel cad/salome-light||2014-01-24|Has expired: depends on expired cad/salome-kernel cad/salome-randomizer||2014-01-24|Has expired: depends on expired cad/salome-kernel cad/salome-sierpinsky||2014-01-24|Has expired: depends on expired cad/salome-kernel cad/salome-geom||2014-01-24|Has expired: depends on expired cad/salome-kernel devel/combat||2014-01-24|Has expired: depends on expired devel/mico net-mgmt/nagios-devel|net-mgmt/nagios|2014-01-25|Master site gone, outdated math/octave-forge-image-acquisition||2014-01-27|Depends on multimedia/libv4l which no longer has necessary headers lang/racket-textual|lang/racket-minimal|2014-01-27|Renamed upstream mail/pop-before-smtp||2014-01-27|Removed graphics/glfw-devel||2014-01-28|Removed devel/py-ua-parser|devel/py-ua_parser|2014-01-28|Reflect module name french/ispell|french/aspell|2014-01-29|Removed, consider using aspell instead german/ispell|german/aspell|2014-01-29|Removed, consider using aspell instead german/ispell-alt|german/aspell|2014-01-29|Removed, consider using aspell instead german/ispell-neu|german/aspell|2014-01-29|Removed, consider using aspell instead hungarian/ispell|hungarian/aspell|2014-01-29|Removed, consider using aspell instead polish/ispell|polish/aspell|2014-01-29|Removed, consider using aspell instead portuguese/ispell-pt_BR|portuguese/aspell-pt_BR|2014-01-29|Removed, consider using aspell instead russian/rus-ispell|russian/aspell|2014-01-29|Removed, consider using aspell instead textproc/british-ispell|textproc/en-aspell|2014-01-29|Removed, consider using aspell instead textproc/es-ispell|textproc/es-aspell|2014-01-29|Removed, consider using aspell instead textproc/ispell|textproc/aspell-ispell|2014-01-29|Removed, consider using aspell instead textproc/it-ispell|textproc/it-aspell|2014-01-29|Removed, consider using aspell instead textproc/nl-ispell|textproc/nl-aspell|2014-01-29|Removed, consider using aspell instead textproc/sk-ispell|textproc/sk-aspell|2014-01-29|Removed, consider using aspell instead ukrainian/ispell|ukrainian/aspell|2014-01-29|Removed, consider using aspell instead databases/p5-DBD-mysql52|databases/p5-DBD-mysql|2014-01-29|Depends on expired MySQL version audio/gsi||2014-01-30|Removed, abandonware multimedia/kino||2014-01-31|Has expired: Not developed since 2009, declared dead 05.08.2013 on there website x11-drivers/xf86-video-imstt||2014-01-31|Has expired: Broken, unsupported and unmaintained upstream x11-drivers/xf86-video-via||2014-01-31|Has expired: Broken, not supported upstream multimedia/vdr-plugin-softdevice||2014-01-31|Has expired: Broken after ffmpeg update (not sure it ever worked) sysutils/mbmon|sysutils/xmbmon|2014-01-31|Has expired: Use sysutils/xmbmon instead. This port will be removed soon dns/bind96||2014-01-31|Has expired: EOL in January 2014, consider moving to Bind 9.8 or 9.9 x11-drivers/xf86-video-nouveau||2014-01-31|Has expired: missing kernel support; use official NVidia driver cad/mars||2014-01-31|Removed, abandonware, no releases in the past 20 years polish/gimp-help||2014-02-01|Removed, excluded from gimp-help-2.8.1 release multimedia/xbmc-pvr||2014-02-03|Has expired: multimedia/xbmc and multimedia/xbmc-addon-pvr are newer misc/libmcal||2014-02-03|Has expired: No more used and development discontinued textproc/py-4suite||2014-02-03|Has expired: only builds with Python up to version 2.4 multimedia/xbmc-addon-xvdr||2014-02-03|Has expired: Depends on expired multimedia/xbmc-pvr deskutils/gmcal||2014-02-03|Has expired: Depends on expired misc/libmcal deskutils/mcal||2014-02-03|Has expired: Depends on expired misc/libmcal sysutils/relpath||2014-02-03|Has expired: unfetchable distfiles sysutils/decomment||2014-02-03|Has expired: unfetchable distfiles multimedia/openmovieeditor||2014-02-03|Has expired: segfaults, upstream development ceased french/gfaim||2014-02-04|Abandonware math/matlab-R2012a-installer|math/matlab-installer|2014-02-04|Now it can handle any Matlab version games/deal||2014-02-05|Abandonware japanese/grep|textproc/gnugrep|2014-02-06|Official version properly support multi-byte, consider using textproc/gnugrep www/comclear||2014-02-06|Netscape doesn't exist anymore editors/openoffice-3|editors/openoffice-4|2014-02-07|OpenOffice 3 is not supported anymore mail/muttzilla||2014-02-07|Netscape doesn't exist anymore www/nscache||2014-02-07|Netscape doesn't exist anymore audio/bebocd||2014-02-08|Has expired: abandoned by mainstream www/runsomebrowser|www/webbrowser|2014-02-09|Name changed irc/trickyirc||2014-02-10|Abandonware, segfaults, no releases in 15 years databases/p5-DBD-mysql55|databases/p5-DBD-mysql|2014-02-12|If you need a different default MYSQL version, use DEFAULT_VERSIONS databases/p5-DBD-mysql56|databases/p5-DBD-mysql|2014-02-12|If you need a different default MYSQL version, use DEFAULT_VERSIONS textproc/p5-ElasticSearch|textproc/p5-ElasticSearch-legacy|2014-02-12|This version is deprecated in favor of the official client x11-fonts/cosmic-sans-neue-mono|x11-fonts/fantasque-sans-mono|2014-02-13|Renamed upstream mail/zmailer||2014-02-13|Broken since at least last August lang/gcc34|lang/gcc|2014-02-13|Superseded by GCC 4.6 or later lang/perl5.12|lang/perl5.16|2014-02-14|Has expired: no longer under development, use lang/perl5.18 or lang/perl5.16 devel/adabooch-doc-html||2014-02-15|Obsolete; adabooch now has DOCS option x11-toolkits/sakura|x11/sakura|2014-02-16|Moved to a better category misc/kde4-shared-mime-info||2014-02-18|Removed: this port is not needed anymore deskutils/kdepim44-runtime||2014-02-18|Removed: conflicts with new kdepimlibs deskutils/kdepim44||2014-02-18|Removed: depends on deskutils/kdepim44-runtime misc/kde-xdg-env||2014-02-18|Removed, remnant of KDE 3 lang/g95||2014-02-18|Removed, uses an old version of GCC which can't be built anymore games/py-ski|games/ski|2014-02-18|Rename to match upstream naming textproc/docbook-241|textproc/docbook-sgml|2014-02-19|Merged into textproc/docbook-sgml textproc/docbook-300|textproc/docbook-sgml|2014-02-19|Merged into textproc/docbook-sgml textproc/docbook-310|textproc/docbook-sgml|2014-02-19|Merged into textproc/docbook-sgml textproc/docbook-400|textproc/docbook-sgml|2014-02-19|Merged into textproc/docbook-sgml textproc/docbook-410|textproc/docbook-sgml|2014-02-19|Merged into textproc/docbook-sgml textproc/docbook-420|textproc/docbook-sgml|2014-02-19|Merged into textproc/docbook-sgml textproc/docbook-430|textproc/docbook-sgml|2014-02-19|Merged into textproc/docbook-sgml textproc/docbook-440|textproc/docbook-sgml|2014-02-19|Merged into textproc/docbook-sgml textproc/docbook-450|textproc/docbook-sgml|2014-02-19|Merged into textproc/docbook-sgml textproc/docbook-xml-430|textproc/docbook-xml|2014-02-19|Merged into textproc/docbook-xml textproc/docbook-xml-440|textproc/docbook-xml|2014-02-19|Merged into textproc/docbook-xml textproc/docbook-xml-450|textproc/docbook-xml|2014-02-19|Merged into textproc/docbook-xml textproc/docbook-500|textproc/docbook-xml|2014-02-19|Merged into textproc/docbook-xml textproc/docbook-sk|textproc/docbook-xml|2014-02-19|Merged into textproc/docbook-xml emulators/ski||2014-02-19|Removed, does not exist on HP's site anymore sysutils/liblogging|devel/liblogging|2014-02-20|Already exists as devel/liblogging devel/bzr-grep||2014-02-24|Has expired: Broken for more than 4 months multimedia/youtube-viewer||2014-02-24|Has expired: Development ceased for 2.5 branch, conflict with gtk-youtube-viewer x11-toolkits/flvw||2014-02-24|Abandonware textproc/p5-XML-Xerces||2014-02-24|Depends on a non supported version of xerces-c x11-toolkits/fl_editor||2014-02-24|Abandonware, buggy rendering, and not stage friendly x11-toolkits/gtkunique|x11-toolkits/unique|2014-02-24|Superseded by x11-toolkits/unique japanese/ruby-man||2014-02-25|Has expired: Documents EOLd version of Ruby and unmaintained lang/ruby-programmingruby||2014-02-25|Has expired: Documents EOLd version of Ruby and unmaintained lang/ruby-man||2014-02-25|Has expired: Documents EOLd version of Ruby and unmaintained lang/ruby-usersguide||2014-02-25|Has expired: Documents EOLd version of Ruby and unmaintained graphics/wmgrabimage||2014-02-25|Has expired: No more public distfiles www/trac-hierwiki||2014-02-27|Has expired: Runtime is broken, doesn't support Trac>0.11 www/openvrml||2014-02-27|Has expired: Broken for more than 6 months science/peekabot||2014-02-27|Has expired: Broken for more than 6 months misc/xbiso||2014-02-27|Has expired: Broken for more than 6 months net/hornetq||2014-02-27|Has expired: Broken for more than 6 months sysutils/slmon||2014-02-27|Has expired: Broken for more than 6 months www/trac-revtree||2014-02-27|Has expired: Broken for more than 6 months security/crack||2014-02-27|Has expired: Broken for more than 6 months sysutils/graphicboot||2014-02-27|Has expired: Broken for more than 6 months, upstream disappeared sysutils/ckl||2014-02-27|Has expired: Broken for more than 6 months japanese/trac||2014-02-27|Has expired: Broken for more than 6 months lang/opa||2014-02-27|Has expired: Broken for more than 6 months sysutils/mmore||2014-02-27|Has expired: Broken for more than 6 months www/trac-announcer||2014-02-27|Has expired: Broken for more than 6 months lang/expect-devel||2014-02-28|No longer relevant. Use lang/expect instead x11-drivers/xf86-video-radeonhd|x11-drivers/xf86-video-ati|2014-02-28|Has expired: Abandoned upstream since 2010 net/asterisk10||2014-02-28|Has expired: asterisk 10 reached EOL on 2013-12-15 textproc/py-lucene||2014-02-28|Has expired: Broken for more than 6 months lang/gcc44|lang/gcc|2014-02-28|Superseded by GCC 4.6 or later archivers/php52-bz2||2014-03-01|PHP 5.2 is end-of-life archivers/php52-zip||2014-03-01|PHP 5.2 is end-of-life archivers/php52-zlib||2014-03-01|PHP 5.2 is end-of-life converters/php52-iconv||2014-03-01|PHP 5.2 is end-of-life converters/php52-mbstring||2014-03-01|PHP 5.2 is end-of-life converters/php52-recode||2014-03-01|PHP 5.2 is end-of-life databases/php52-dba||2014-03-01|PHP 5.2 is end-of-life databases/php52-dbase||2014-03-01|PHP 5.2 is end-of-life databases/php52-interbase||2014-03-01|PHP 5.2 is end-of-life databases/php52-mssql||2014-03-01|PHP 5.2 is end-of-life databases/php52-mysql||2014-03-01|PHP 5.2 is end-of-life databases/php52-mysqli||2014-03-01|PHP 5.2 is end-of-life databases/php52-oci8||2014-03-01|PHP 5.2 is end-of-life databases/php52-odbc||2014-03-01|PHP 5.2 is end-of-life databases/php52-pdo||2014-03-01|PHP 5.2 is end-of-life databases/php52-pdo_dblib||2014-03-01|PHP 5.2 is end-of-life databases/php52-pdo_firebird||2014-03-01|PHP 5.2 is end-of-life databases/php52-pdo_mysql||2014-03-01|PHP 5.2 is end-of-life databases/php52-pdo_oci||2014-03-01|PHP 5.2 is end-of-life databases/php52-pdo_odbc||2014-03-01|PHP 5.2 is end-of-life databases/php52-pdo_pgsql||2014-03-01|PHP 5.2 is end-of-life databases/php52-pdo_sqlite||2014-03-01|PHP 5.2 is end-of-life databases/php52-pgsql||2014-03-01|PHP 5.2 is end-of-life databases/php52-sqlite||2014-03-01|PHP 5.2 is end-of-life databases/php52-sybase_ct||2014-03-01|PHP 5.2 is end-of-life devel/php52-gettext||2014-03-01|PHP 5.2 is end-of-life devel/php52-json||2014-03-01|PHP 5.2 is end-of-life devel/php52-ncurses||2014-03-01|PHP 5.2 is end-of-life devel/php52-pcntl||2014-03-01|PHP 5.2 is end-of-life devel/php52-pcre||2014-03-01|PHP 5.2 is end-of-life devel/php52-readline||2014-03-01|PHP 5.2 is end-of-life devel/php52-shmop||2014-03-01|PHP 5.2 is end-of-life devel/php52-spl||2014-03-01|PHP 5.2 is end-of-life devel/php52-sysvmsg||2014-03-01|PHP 5.2 is end-of-life devel/php52-sysvsem||2014-03-01|PHP 5.2 is end-of-life devel/php52-sysvshm||2014-03-01|PHP 5.2 is end-of-life devel/php52-tokenizer||2014-03-01|PHP 5.2 is end-of-life ftp/php52-curl||2014-03-01|PHP 5.2 is end-of-life ftp/php52-ftp||2014-03-01|PHP 5.2 is end-of-life graphics/php52-exif||2014-03-01|PHP 5.2 is end-of-life graphics/php52-gd||2014-03-01|PHP 5.2 is end-of-life graphics/php52-ming||2014-03-01|PHP 5.2 is end-of-life lang/php52||2014-03-01|PHP 5.2 is end-of-life lang/php52-extensions||2014-03-01|PHP 5.2 is end-of-life mail/php52-imap||2014-03-01|PHP 5.2 is end-of-life math/php52-bcmath||2014-03-01|PHP 5.2 is end-of-life math/php52-gmp||2014-03-01|PHP 5.2 is end-of-life misc/php52-calendar||2014-03-01|PHP 5.2 is end-of-life net/php52-ldap||2014-03-01|PHP 5.2 is end-of-life net/php52-soap||2014-03-01|PHP 5.2 is end-of-life net/php52-sockets||2014-03-01|PHP 5.2 is end-of-life net/php52-xmlrpc||2014-03-01|PHP 5.2 is end-of-life net-mgmt/php52-snmp||2014-03-01|PHP 5.2 is end-of-life security/php52-filter||2014-03-01|PHP 5.2 is end-of-life security/php52-hash||2014-03-01|PHP 5.2 is end-of-life security/php52-mcrypt||2014-03-01|PHP 5.2 is end-of-life security/php52-mhash||2014-03-01|PHP 5.2 is end-of-life security/php52-openssl||2014-03-01|PHP 5.2 is end-of-life sysutils/pecl-fileinfo||2014-03-01|PHP 5.2 is end-of-life sysutils/php52-posix||2014-03-01|PHP 5.2 is end-of-life textproc/php52-ctype||2014-03-01|PHP 5.2 is end-of-life textproc/php52-dom||2014-03-01|PHP 5.2 is end-of-life textproc/php52-pspell||2014-03-01|PHP 5.2 is end-of-life textproc/php52-simplexml||2014-03-01|PHP 5.2 is end-of-life textproc/php52-wddx||2014-03-01|PHP 5.2 is end-of-life textproc/php52-xml||2014-03-01|PHP 5.2 is end-of-life textproc/php52-xmlreader||2014-03-01|PHP 5.2 is end-of-life textproc/php52-xmlwriter||2014-03-01|PHP 5.2 is end-of-life textproc/php52-xsl||2014-03-01|PHP 5.2 is end-of-life www/php52-session||2014-03-01|PHP 5.2 is end-of-life www/php52-tidy||2014-03-01|PHP 5.2 is end-of-life lang/clang31||2014-03-01|Has expired: No remaining dependencies devel/llvm31||2014-03-01|Has expired: No remaining dependencies (except clang31) shells/bash-devel|shells/bash|2014-03-03|Maintainer reset, main port now properly maintained shells/bash-static-devel|shells/bash-static|2014-03-03|Maintainer reset, main port now properly maintained x11/mgapdesk||2014-03-03|Has expired: Needs an old (pre-7.2) XFree86/X.Org header file to build security/kwallet|security/kwalletmanager|2014-03-04|Renamed to match upstream naming databases/mysqlard||2014-03-06|Has expired: Abandonware print/acrobatviewer||2014-03-06|Has expired: Abandoned, outdated (no updates since 1999) multimedia/castpodder||2014-03-06|Has expired: Depends on deprecated multimedia/beep-media-player audio/bmp-modplug|multimedia/audacious|2014-03-06|Has expired: Abandonware, please consider using multimedia/audacious instead audio/bmp-fc|multimedia/audacious|2014-03-06|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/bmp-rootvis|multimedia/audacious|2014-03-06|Has expired: Abandonware, please consider using multimedia/audacious instead deskutils/bmp-docklet|multimedia/audacious|2014-03-06|Has expired: Abandonware, please consider using multimedia/audacious instead audio/bmp-festalon|multimedia/audacious|2014-03-06|Has expired: Abandonware, please consider using multimedia/audacious instead audio/bmp-faad|multimedia/audacious|2014-03-06|Has expired: Abandonware, please consider using multimedia/audacious instead audio/bmp-flac|multimedia/audacious|2014-03-06|Has expired: Abandonware, please consider using multimedia/audacious instead audio/bmp-wma|multimedia/audacious|2014-03-06|Has expired: Abandonware, please consider using multimedia/audacious instead multimedia/py-pybmp|multimedia/audacious|2014-03-06|Has expired: Abandonware, please consider using multimedia/audacious instead audio/bmp-mac|multimedia/audacious|2014-03-06|Has expired: Abandonware, please consider using multimedia/audacious instead audio/bmp-songchange|multimedia/audacious|2014-03-06|Has expired: Abandonware, please consider using multimedia/audacious instead audio/bmp-htmlplaylist|multimedia/audacious|2014-03-06|Has expired: Abandonware, please consider using multimedia/audacious instead audio/bmp-crossfade|multimedia/audacious|2014-03-06|Has expired: Abandonware, please consider using multimedia/audacious instead audio/bmp-scrobbler|multimedia/audacious|2014-03-06|Has expired: Abandonware, please consider using multimedia/audacious instead shells/wapsh||2014-03-06|Broken and abandonware shells/zoidberg||2014-03-06|Broken and abandonware x11-toolkits/py31-tkinter|x11-toolkits/py-tkinter|2014-03-06|Has expired: Depends on expiring lang/python31 misc/logsurfer+|misc/logsurfer|2014-03-07|Renamed upstream net-p2p/i2p|security/i2p|2014-03-07|Category change deskutils/phprojekt||2014-03-08|Has expired: No more public distfiles deskutils/libopensync-plugin-synce-legacy||2014-03-08|Has expired: No more public distfiles dns/skadns||2014-03-08|Has expired: No more public distfiles sysutils/gkrellmwho2||2014-03-08|Has expired: No more public distfiles audio/xmms-musepack||2014-03-08|Has expired: No more public distfiles devel/cvsstat||2014-03-08|Has expired: No more public distfiles graphics/enfle||2014-03-08|Has expired: No more public distfiles audio/oggsplit||2014-03-08|Has expired: No more public distfiles devel/picasm||2014-03-08|Has expired: No more public distfiles databases/mysql-udf-preg||2014-03-08|Has expired: No more public distfiles net/mars_nwe||2014-03-08|Has expired: No more public distfiles audio/fmio||2014-03-08|Has expired: No more public distfiles audio/libmtp|multimedia/libmtp|2014-03-09|Moved from audio to multimedia mail/p5-Mail-SpamAssassin-Alt|mail/p5-Mail-SpamAssassin|2014-03-09|Retired; please use mail/p5-Mail-SpamAssassin mail/fetchyahoo||2014-03-10|Has expired: Yahoo classic mail interface is discontinued, so this port is permanently broken audio/p5-Audio-Beep||2014-03-10|Has expired: Depends on expiring audio/beep multimedia/beep-media-player|multimedia/audacious|2014-03-10|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/jumpgis-postgis||2014-03-10|Has expired: Depends on expiring graphics/jumpgis graphics/jumpgis||2014-03-10|Has expired: No more public distfiles mail/xfmail||2014-03-10|Has expired: No more public distfiles net/freenx||2014-03-10|Has expired: Depends on expiring net/nxserver deskutils/libopensync-plugin-synce||2014-03-10|Has expired: No more public distfiles irc/irchat-pj-xemacs21-mule||2014-03-10|Has expired: No more public distfiles irc/pure-xemacs21-mule||2014-03-10|Has expired: No more public distfiles lang/dice||2014-03-10|Has expired: No more public distfiles irc/dcc||2014-03-10|Has expired: No more public distfiles sysutils/backupme||2014-03-10|Has expired: No more public distfiles net/freeswitch-curl-devel||2014-03-10|Has expired: No more public distfiles misc/freeswitch-pizzademo-devel||2014-03-10|Has expired: No more public distfiles emulators/cygne-sdl||2014-03-10|Has expired: No more public distfiles mail/newmail||2014-03-10|Has expired: No more public distfiles x11-toolkits/xscoop||2014-03-10|Has expired: No more public distfiles security/didentd||2014-03-10|Has expired: No more public distfiles net/freeswitch-sbc-devel||2014-03-10|Has expired: No more public distfiles multimedia/gxanim||2014-03-10|Has expired: No more public distfiles www/nd||2014-03-10|Has expired: No more public distfiles lang/fbbi||2014-03-10|Has expired: No more public distfiles textproc/csv2xml||2014-03-10|Has expired: No more public distfiles www/trac-calendar||2014-03-10|Has expired: No more public distfiles misc/stan||2014-03-10|Has expired: No more public distfiles japanese/gtkicq||2014-03-10|Has expired: No more public distfiles net/nc6||2014-03-10|Has expired: No more public distfiles net/jpcap||2014-03-10|Has expired: No more public distfiles games/quake-extras||2014-03-10|Has expired: No more public distfiles net/asfrecorder||2014-03-10|Has expired: No more public distfiles sysutils/pyrenamer||2014-03-10|Has expired: No more public distfiles palm/synce-sync-engine||2014-03-10|Has expired: No more public distfiles www/linux-mplayer-plugin||2014-03-10|Has expired: No more public distfiles net-mgmt/airport||2014-03-10|Has expired: No more public distfiles textproc/manued.el||2014-03-10|Has expired: No more public distfiles sysutils/jailer||2014-03-10|Has expired: No more public distfiles sysutils/blimitd||2014-03-10|Has expired: No more public distfiles print/abntex||2014-03-10|Has expired: No more public distfiles sysutils/monkeytail||2014-03-10|Has expired: No more public distfiles dns/dns_mre||2014-03-10|Has expired: No more public distfiles japanese/libjcode||2014-03-10|Has expired: No more public distfiles net/freeswitch-vanilla-devel||2014-03-10|Has expired: No more public distfiles sysutils/hdup||2014-03-10|Has expired: No more public distfiles x11/settitle||2014-03-10|Has expired: No more public distfiles sysutils/anteater||2014-03-10|Has expired: No more public distfiles www/trac-pendingticket||2014-03-10|Has expired: No more public distfiles www/admuser||2014-03-10|Has expired: No more public distfiles x11-themes/gnome-icons-snowish||2014-03-10|Has expired: No more public distfiles www/metacafe_dl||2014-03-10|Has expired: No more public distfiles irc/irchat-pj-emacs21||2014-03-10|Has expired: No more public distfiles www/horde3-wicked||2014-03-10|Has expired: No more public distfiles java/drexelsnmp||2014-03-10|Has expired: No more public distfiles mail/sigit||2014-03-10|Has expired: No more public distfiles misc/freeswitch-scripts-devel||2014-03-10|Has expired: No more public distfiles www/vtiger-customerportal||2014-03-10|Has expired: No more public distfiles irc/pure-emacs21||2014-03-10|Has expired: No more public distfiles www/extsm||2014-03-10|Has expired: No more public distfiles misc/cwish||2014-03-10|Has expired: No more public distfiles www/phpscheduleit||2014-03-10|Has expired: No more public distfiles palm/synce-serial||2014-03-10|Has expired: No more public distfiles palm/synce-vdccm||2014-03-10|Has expired: No more public distfiles net/freeswitch-insideout-devel||2014-03-10|Has expired: No more public distfiles sysutils/fusefs-fur||2014-03-10|Has expired: No more public distfiles mail/clamfilter||2014-03-10|Has expired: No more public distfiles textproc/cost||2014-03-10|Has expired: No more public distfiles palm/synce-gvfs||2014-03-10|Has expired: No more public distfiles net/nxserver||2014-03-10|Has expired: No more public distfiles sysutils/throttle||2014-03-10|Has expired: No more public distfiles japanese/aterm||2014-03-10|Has expired: No more public distfiles mail/teapop||2014-03-10|Has expired: No more public distfiles www/eldav.el||2014-03-10|Has expired: No more public distfiles graphics/gsnapshot||2014-03-10|Has expired: No more public distfiles japanese/zangband||2014-03-10|Has expired: No more public distfiles audio/xmms-wma||2014-03-10|Has expired: No more public distfiles misc/projectionlib||2014-03-10|Has expired: No more public distfiles multimedia/smile||2014-03-10|Has expired: No more public distfiles x11-fm/dfm||2014-03-10|Has expired: No more public distfiles security/xyssl|security/polarssl|2014-03-10|Has expired: No more public distfiles japanese/p5-Mail-SpamAssassin|japanese/spamassassin|2014-03-10|Moved to japanese/spamassassin mail/p5-Mail-SpamAssassin|mail/spamassassin|2014-03-10|Moved to mail/spamassassin databases/pear-MDB2_Driver_sqlite||2014-03-12|Unmaintained upstream net/pppd23||2014-03-14|Has expired: Depends on PPPDISC net/ipa_ip6fw||2014-03-14|Has expired: Depends on IPv6 ipfw firewall palm/synce-hal||2014-03-14|Has expired: Requires pppd net/pppoa||2014-03-14|Has expired: Broken on FreeBSD 8.x and later since June 2009 multimedia/linux-huludesktop||2014-03-14|Removed multimedia/linux_v4l2wrapper-kmod||2014-03-16|Has expired: Included now in all supported FreeBSD versions devel/sgl||2014-03-16|Has expired: never progressed beyond incomplete graduate project; library was never properly built and not worth fixing palm/jpilot-db||2014-03-16|Has expired databases/ludia||2014-03-18|Has expired: Broken since June 2013 lang/schemetoc||2014-03-18|Has expired: Broken since July 2013 sysutils/py-salt-cloud|sysutils/py-salt|2014-03-19|Removed:py-salt-cloud is now part of py-salt devel/py-pyzmq|net/py-pyzmq|2014-03-22|Move to a more suitable category with other ZeroMQ ports audio/p5-Xmms|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-a52dec|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-audiofile|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-cdread|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-crossfade|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-crystality|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-defx|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-efxmms|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-eq|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-fc|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-fxt|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-infopipe|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-jack|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-liveice|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-mac|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-mad|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-midi|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-modplug|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-mp3cue|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-osssurround|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-quix3dn|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-sid|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-sndfile|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-tfmx|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead chinese/xmms|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-blursk|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-dancingparticles|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-dflowers|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-dscope|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-dspectogram|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-dspectral|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-finespectrum|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-fishmatic|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-gdancer|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-iris|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-jess|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-nebulus|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-paranormal|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-scivi|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-vumeter|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead graphics/xmms-waterfall|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead multimedia/gxmms|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead multimedia/xmms-status-plugin|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead russian/xmms|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead x11-themes/xmms-bluecurve-theme|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead x11-themes/xmms-eq-skins|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead x11-themes/xmms-vumeter-skins|multimedia/audacious|2014-03-23|Has expired: Abandonware, please consider using multimedia/audacious instead mail/mahogany||2014-03-24|Broken with all support compilers x11-toolkits/py-wxPython26|x11-toolkits/py-wxPython28|2014-03-24|wxPython26 is EOLed x11-toolkits/py-wxPython26-common|x11-toolkits/py-wxPython28-common|2014-03-24|wxPython26 is EOLed x11-toolkits/py-wxPython26-unicode|x11-toolkits/py-wxPython28-unicode|2014-03-24|wxPython26 is EOLed x11-toolkits/wxgtk26|x11-toolkits/wxgtk28|2014-03-24|wxGTK 2.6 is EOLed x11-toolkits/wxgtk26-common|x11-toolkits/wxgtk28-common|2014-03-24|wxGTK 2.6 is EOLed x11-toolkits/wxgtk26-contrib|x11-toolkits/wxgtk28-contrib|2014-03-24|wxGTK 2.6 is EOLed x11-toolkits/wxgtk26-contrib-common|x11-toolkits/wxgtk28-contrib-common|2014-03-24|wxGTK 2.6 is EOLed x11-toolkits/wxgtk26-docs||2014-03-24|wxGTK 2.6 is EOLed x11-toolkits/wxgtk26-unicode|x11-toolkits/wxgtk28-unicode|2014-03-24|wxGTK 2.6 is EOLed x11-toolkits/wxgtk26-unicode-contrib|x11-toolkits/wxgtk28-unicode-contrib|2014-03-24|wxGTK 2.6 is EOLed x11-toolkits/wxgtk29|x11-toolkits/wxgtk30|2014-03-24|wxGTK 2.9 was a development version superseded by the 3.0 release accessibility/ruby-atk||2014-03-24|Has expired: Use rubygem-atk instead devel/ruby-gio2||2014-03-24|Has expired: Use rubygem-gio2 instead devel/ruby-glib2||2014-03-24|Has expired: Use rubygem-glib2 instead graphics/ruby-cairo||2014-03-24|Has expired: Use rubygem-cairo instead graphics/ruby-gdk_pixbuf2||2014-03-24|Has expired: Use rubygem-gdk_pixbuf2 instead graphics/ruby-rsvg2||2014-03-24|Has expired: Use rubygem-rsvg2 instead x11-toolkits/ruby-goocanvas||2014-03-24|Has expired: No longer included upstream x11-toolkits/ruby-gstreamer||2014-03-24|Has expired: Use rubygem-gstreamer instead x11-toolkits/ruby-gtk2||2014-03-24|Has expired: Use rubygem-gtk2 instead x11-toolkits/ruby-gtksourceview2||2014-03-24|Has expired: Use rubygem-gtksourceview2 instead x11-toolkits/ruby-pango||2014-03-24|Has expired: Use rubygem-pango instead x11-toolkits/ruby-poppler||2014-03-24|Has expired: Use rubygem-poppler instead x11-toolkits/ruby-vte||2014-03-24|Has expired: Use rubygem-vte instead x11/ruby-gnome2||2014-03-24|Has expired: Use rubygem-gnome2 instead deskutils/lxshortcut||2014-03-24|Has expired: Now distributed with x11/libfm-1.2.0 databases/p5-Ima-DBI-Contextual||2014-03-24|Has expired: deprecated by upstream databases/p5-Class-DBI-Lite||2014-03-24|Has expired: deprecated by upstream net/AquaGatekeeper||2014-03-24|Has expired: Binary port of software abandoned by the vendor games/xflame||2014-03-24|Has expired: No more public distfiles games/p5-Algorithm-Pair-Best|games/p5-Algorithm-Pair-Best2|2014-03-24|Has expired: Use games/p5-Algorithm-Pair-Best2 instead x11-wm/hackedbox||2014-03-24|Has expired: Abandonware emulators/hfs|sysutils/hfsutils|2014-03-24|Has expired: No upstream, no public distfiles; consider using 'sysutils/hfsutils' games/fuhquake||2014-03-24|Has expired: Upstream disappeared; no more public distfiles; unmaintained games/xarchon||2014-03-25|Has expired: Unusable, development ceased, not works with stage lang/libstdc++_stldoc_3.4.0||2014-03-25|STL 3.4 is not supported for long games/linux-warsow||2014-03-26|Has expired: outdated, broken audio/pysol-sound-server|games/pysolfc|2014-03-28|Has expired: Broken, abandonware, use pysolfc games/pysol-cardsets|games/pysolfc|2014-03-28|Has expired: Broken, abandonware, use pysolfc games/pysol-music|games/pysolfc|2014-03-28|Has expired: Broken, abandonware, use pysolfc games/pysol|games/pysolfc|2014-03-28|Has expired: Broken, abandonware, use pysolfc devel/ros_tutorials||2014-03-28|Has expired: Depends on expiring devel/ros_comm math/ros-geometry||2014-03-28|Has expired: Depends on expiring devel/ros_comm devel/ros-nxt||2014-03-28|Has expired: Depends on expiring devel/ros_comm devel/ros-rx||2014-03-28|Has expired: Depends on expiring devel/ros_comm devel/ros-documentation||2014-03-28|Has expired: Depends on expiring devel/ros_comm devel/ros-common_msgs||2014-03-28|Has expired: Depends on expiring devel/ros_comm devel/ros_comm||2014-03-28|Has expired: Broken for more than 6 months devel/cross-gdb||2014-03-28|Has expired: No more public distfiles, unstaged x11-wm/fvwm2-i18n|x11-wm/fvwm2|2014-03-28|Does not differ from main fvwm2 port games/linux-spheresofchaos-demo||2014-03-28|Has expired: No more public distfiles chinese/php5-cconv|chinese/php-cconv|2014-03-30|Rename to php- emulators/gxmame||2014-03-30|Has expired: Depends on deprecated emulators/xmame emulators/pyxmame||2014-03-30|Has expired: Depends on deprecated emulators/xmame emulators/xmess||2014-03-30|Has expired: No more public distfiles benchmarks/xdd||2014-03-30|Has expired: No more public distfiles chinese/srecite||2014-03-30|Has expired: No more public distfiles games/hlstats||2014-03-30|Has expired: No more public distfiles audio/teamspeak_server||2014-03-30|Has expired: No more public distfiles games/utserver||2014-03-30|Has expired: No more public distfiles databases/p5-hp200lx-db||2014-03-30|Has expired: No more public distfiles audio/teamspeak_client||2014-03-30|Has expired: No more public distfiles german/vtiger||2014-03-30|Has expired: Depends on expiring www/vtiger www/gallery||2014-03-30|Has expired: No more public distfiles www/vtiger||2014-03-30|Has expired: No more public distfiles net/linux-nx-client||2014-03-30|Has expired: No more public distfiles emulators/extract-xiso||2014-03-30|Has expired: No more public distfiles www/trac-wantedpages||2014-03-30|Has expired: No more public distfiles www/trac-codetags||2014-03-30|Has expired: No more public distfiles www/trac-addcomment||2014-03-30|Has expired: No more public distfiles www/trac-nav||2014-03-30|Has expired: No more public distfiles www/trac-pagetopdf||2014-03-30|Has expired: No more public distfiles sysutils/logmon||2014-03-30|Has expired: No more public distfiles www/trac-simpleticket||2014-03-30|Has expired: No more public distfiles www/trac-wikinegotiator||2014-03-30|Has expired: No more public distfiles www/trac-pagelist||2014-03-30|Has expired: No more public distfiles www/trac-remind||2014-03-30|Has expired: No more public distfiles www/trac-macropost||2014-03-30|Has expired: No more public distfiles lang/rscheme||2014-03-30|Has expired: No more public distfiles emulators/xmame||2014-03-30|Has expired: No more public distfiles devel/hyena||2014-04-01|Has expired: Broken for more than 6 months print/pdfmod||2014-04-01|Has expired: Depends on expired devel/hyena, unstaged, uses old standards security/gnutls-devel||2014-04-01|Has expired: Stale, broken and vulnerable sysutils/epylog||2014-04-01|Has expired: distfiles no longer fetchable japanese/Wnn6||2014-04-01|Has expired: Unmaintained, interactive and restricted japanese/srd-fpw||2014-04-01|Has expired: Unmaintained, interactive and restricted japanese/mypaedia-fpw||2014-04-01|Has expired: Unmaintained, interactive and restricted news/dnews||2014-04-01|Has expired: Unmaintained, interactive and restricted devel/adasdl|devel/sdl_gnat|2014-04-01|Has expired: Ancient, does not build on amd64; use devel/sdl_gnat instead lang/gnat|lang/gcc-aux|2014-04-01|Has expired: The Ada framework is based on lang/gcc-aux, use it instead textproc/p5-Elasticsearch|textproc/p5-Search-Elasticsearch|2014-04-02|Renamed upstream net/kdnssd|net/zeroconf-ioslave|2014-04-03|Renamed to match upstream naming www/aolserver||2014-04-03|Has expired: abandonware, messing up on clusters www/openacs-dotlrn||2014-04-03|Has expired: Depends on expiring www/aolserver www/openacs||2014-04-03|Has expired: Depends on expiring www/aolserver security/aolserver-nsmcrypt||2014-04-03|Has expired: abandonware, messing up on clusters www/aolserver-xotcl||2014-04-03|Has expired: abandonware, messing up on clusters graphics/aolserver-nsgd||2014-04-03|Has expired: abandonware, messing up on clusters security/aolserver-nsencrypt||2014-04-03|Has expired: abandonware, messing up on clusters security/aolserver-nsmhash||2014-04-03|Has expired: abandonware, messing up on clusters archivers/aolserver-nszlib||2014-04-03|Has expired: abandonware, messing up on clusters security/aolserver-nsopenssl||2014-04-03|Has expired: abandonware, messing up on clusters databases/aolserver-nspostgres||2014-04-03|Has expired: abandonware, messing up on clusters databases/aolserver-nsmysql||2014-04-03|Has expired: abandonware, messing up on clusters security/aolserver-nssha1||2014-04-03|Has expired: abandonware, messing up on clusters www/webobjects||2014-04-04|Has expired: Unmaintained, interactive and restricted devel/p5-Devel-LeakTrace-Fast||2014-04-04|Has expired: Broken for more than 6 months www/privoxy+ipv6|www/privoxy|2014-04-06|Has expired: www/privoxy natively supports IPv6 games/f1lt||2014-04-06|Trademark violation: http://www.formula1.com/trademarkguidelines.html graphics/pyggel|graphics/py-pyggel|2014-04-07|Rename to consistency with other Python ports japanese/p5-manual||2014-04-08|Outdated manuals graphics/openclipart||2014-04-08|Outdated, has no real meaning as a port audio/py-xmms||2014-04-08|Has expired: Abandonware, please consider using multimedia/audacious instead archivers/ruby-libarchive|archivers/rubygem-libarchive|2014-04-08|Use the rubygem version instead java/j2sdkee13||2014-04-10|EOLed long ago astro/glunarclock||2014-04-11|gnome-panel will be updated to the 3.x version which is not compatible with 2.x databases/libgda2||2014-04-11|Ancient version, consider using newer versions databases/libgda2-reference||2014-04-11|Ancient version, consider using newer versions databases/libgda3||2014-04-11|Ancient version, consider using newer versions databases/libgda3-reference||2014-04-11|Ancient version, consider using newer versions databases/libgda3-firebird||2014-04-11|Ancient version, consider using newer versions databases/libgda3-freetds||2014-04-11|Ancient version, consider using newer versions databases/libgda3-ldap||2014-04-11|Ancient version, consider using newer versions databases/libgda3-mdb||2014-04-11|Ancient version, consider using newer versions databases/libgda3-mysql||2014-04-11|Ancient version, consider using newer versions databases/libgda3-odbc||2014-04-11|Ancient version, consider using newer versions databases/libgda3-postgresql||2014-04-11|Ancient version, consider using newer versions databases/libgnomedb||2014-04-11|Superseded by libgda starting from version 4 databases/libgnomedb-reference||2014-04-11|Superseded by libgda starting from version 4 databases/mergeant||2014-04-11|Superseded by libgda starting from version 4 deskutils/evolution-jescs||2014-04-11|Doesn't work with newer version of evolution deskutils/nautilus-locked-folder||2014-04-11|Has expired: nautilus will be updated to the 3.x version which is not compatible with 2.x www/screem||2014-04-11|Has expired: gnome-menus 2.x will be updated in the GNOME 3 import deskutils/nautilus-open-terminal||2014-04-11|Has expired: nautilus will be updated to the 3.x version which is not compatible with 2.x sysutils/eiciel||2014-04-11|Has expired: nautilus will be updated to the 3.x version which is not compatible with 2.x sysutils/nautilus-cd-burner||2014-04-11|Has expired: nautilus will be updated to the 3.x version which is not compatible with 2.x x11-fm/py-nautilus||2014-04-11|Has expired: nautilus will be updated to the 3.x version which is not compatible with 2.x sysutils/sensors-applet||2014-04-11|Has expired: gnome-panel 2.x will be updated in the GNOME 3 import net/link-monitor-applet||2014-04-11|Has expired: gnome-panel 2.x will be updated in the GNOME 3 import net/netspeed_applet||2014-04-11|Has expired: gnome-panel 2.x will be updated in the GNOME 3 import net/remmina-applet||2014-04-11|Has expired: gnome-panel 2.x will be updated in the GNOME 3 import misc/uf-view||2014-04-11|Has expired: gnome-desktop 2.x will be updated in the GNOME 3 import textproc/uim-gnome||2014-04-11|Has expired: gnome-panel 2.x will be updated in the GNOME 3 import audio/istream||2014-04-11|Has expired: gnome-panel will be updated to the 3.x version which is not compatible with 2.x mail/contact-lookup-applet||2014-04-11|Has expired: gnome-panel will be updated to the 3.x version which is not compatible with 2.x security/tuntun||2014-04-11|Has expired: gnome-panel 2.x will be updated in the GNOME 3 import misc/quick-lounge-applet||2014-04-11|Has expired: gnome-panel 2.x will be updated in the GNOME 3 import sysutils/bubblemon2||2014-04-11|Has expired: gnome-panel 2.x will be updated in the GNOME 3 import lang/tcltutor||2014-04-11|Removed, depends on expired ports, unstaged, abandonware palm/gnome-pilot||2014-04-11|Has expired: gnome-panel 2.x will be updated in the GNOME 3 import palm/gnome-pilot-conduits||2014-04-11|Removed (depends on gnome-pilot) www/p5-CGI-modules||2014-04-11|Has expired: No more public distfiles www/p5-WWW-Link||2014-04-11|Has expired: Depends on expired www/p5-CGI-modules www/sbox-dtc||2014-04-11|Has expired: No more public distfiles textproc/glimpse||2014-04-11|Has expired: No more public distfiles ftp/ftplocate||2014-04-11|Has expired: Depends on expired textproc/glimpse misc/tkman||2014-04-11|Has expired: Depends on expired textproc/glimpse net/pcnfsd||2014-04-11|Has expired: Unmaintained since 1997 cad/chipmunk||2014-04-11|Has expired: Unmaintained since 1999 graphics/comix||2014-04-11|Has expired: Insists on installing in /usr/local, and uses nautilus2 which is deprecated www/mambo||2014-04-11|Has expired: Broken for more than 6 months japanese/exmh2||2014-04-11|Has expired: Unmaintained since 1999 net/freewais-sf||2014-04-11|Has expired: Unmaintained since 1999 editors/elvis||2014-04-11|Has expired: Unmaintained since 1999 japanese/sed||2014-04-11|Has expired: Unmaintained since 1999 x11-fm/xfm||2014-04-11|Has expired: Unmaintained since 1999 print/rtf2latex||2014-04-11|Has expired: Unmaintained since 1999 graphics/fbm||2014-04-11|Has expired: Unmaintained since 1999 devel/p5-Penguin-Easy||2014-04-11|Has expired: Unmaintained since 2000 emulators/prodosemu||2014-04-11|Has expired: Unmaintained since 2000 security/gtkportscan||2014-04-11|Has expired: Unmaintained since 2000 graphics/xmfract||2014-04-11|Has expired: Unmaintained since 2000 databases/xmbase-grok||2014-04-11|Has expired: Unmaintained since 2000 emulators/svr4_base||2014-04-11|Has expired: Unmaintained since 2000 math/freefem||2014-04-11|Has expired: Unmaintained since 2000 graphics/tiff2png||2014-04-11|Has expired: Unmaintained since 2000 math/wingz||2014-04-11|Has expired: Unmaintained since 2000 lang/STk||2014-04-11|Has expired: Unmaintained since 2000 graphics/kdc2tiff||2014-04-11|Has expired: Unmaintained since 2000 math/xlispstat||2014-04-11|Has expired: Unmaintained since 2000 databases/typhoon||2014-04-11|Has expired: Unmaintained since 2000 graphics/dc20ctrl||2014-04-11|Has expired: Unmaintained since 2000 www/fhttpd||2014-04-11|Has expired: Unmaintained since 2000 graphics/xmorph||2014-04-11|Has expired: Unmaintained since 2000 editors/axe||2014-04-11|Has expired: Unmaintained since 2000 www/cgic||2014-04-11|Has expired: Unmaintained since 2000 devel/orbitcpp||2014-04-11|Unused anymore, not libc++ friendly graphics/sodipodi|graphics/inkscape|2014-04-11|Sodipodi did not survive the Inkscape fork devel/g-wrap||2014-04-11|Unused, not stage friendly net/pvm++||2014-04-13|Has expired: Unmaintained since 2001 devel/ixlib||2014-04-13|Has expired: Unmaintained since 2001 mail/althea||2014-04-13|Has expired: Unmaintained since 2001 graphics/claraocr||2014-04-13|Has expired: Unmaintained since 2001 graphics/qvplay||2014-04-13|Has expired: Unmaintained since 2001 print/guitartex||2014-04-13|Has expired: Unmaintained since 2001 graphics/opendis||2014-04-13|Has expired: Unmaintained since 2001 net/gnome-mud||2014-04-13|Has expired: Unmaintained since 2001 graphics/maverik||2014-04-13|Has expired: Unmaintained since 2001 biology/rasmol||2014-04-13|Has expired: Unmaintained since 2001 mail/mail2procmailrc||2014-04-13|Has expired: Unmaintained since 2001 science/felt||2014-04-13|Has expired: Unmaintained since 2001 textproc/pardiff||2014-04-13|Has expired: Unmaintained since 2001 lang/klone||2014-04-13|Has expired: Unmaintained since 2001 net/rmsg||2014-04-13|Has expired: Unmaintained since 2001 net/sharity-light||2014-04-13|Has expired: Unmaintained since 2001 biology/genpak||2014-04-13|Has expired: Unmaintained since 2001 net/forg||2014-04-13|Has expired: Unmaintained since 2001 misc/txt2regex||2014-04-13|Has expired: Unmaintained since 2001 textproc/ipdf||2014-04-13|Has expired: Unmaintained since 2001 graphics/plotmtv||2014-04-13|Has expired: Unmaintained since 2001 devel/happydoc||2014-04-13|Has expired: Unmaintained since 2001 print/cpp2latex||2014-04-13|Has expired: Unmaintained since 2001 graphics/svg2swf||2014-04-13|Has expired: Unmaintained since 2001 devel/flick||2014-04-13|Has expired: Unmaintained since 2001 mail/smail||2014-04-13|Has expired: Unmaintained since 2001 net/net-http||2014-04-13|Has expired: Unmaintained since 2001 graphics/camediaplay||2014-04-13|Has expired: Unmaintained since 2001 math/umatrix||2014-04-13|Has expired: Unmaintained since 2001 lang/f77||2014-04-13|Has expired: Unmaintained since 2001 security/labrea||2014-04-14|Has expired: Unmaintained since 2003 lang/dmd|lang/dmd1|2014-04-14|Upline no longer supports dmd 1.X, it is now the secondary dmd port www/mod_python3|www/mod_python33|2014-04-15|Port moved to reflect PKGNAMESUFFIX lang/dragonegg-devel46||2014-04-16|C++ library incompatibilities, unmaintained upstream ports-mgmt/pkgsearch||2014-04-18|Has expired: Upstream disappeared science/flounder||2014-04-18|Has expired: Unmaintained since 2002 security/nbaudit||2014-04-18|Has expired: Unmaintained since 2002 security/saint||2014-04-18|Has expired: Unmaintained since 2002 graphics/gozer||2014-04-18|Has expired: Unmaintained since 2002 misc/pdfmap||2014-04-18|Has expired: Unmaintained since 2002 devel/showgrammar||2014-04-18|Has expired: Unmaintained since 2002 biology/libgenome||2014-04-18|Has expired: Unmaintained since 2002 deskutils/narval||2014-04-18|Has expired: Unmaintained since 2002 devel/fampp||2014-04-18|Has expired: Unmaintained since 2002 net-p2p/py-fngrab||2014-04-18|Has expired: Unmaintained since 2002 misc/wmfirew||2014-04-18|Has expired: Unmaintained since 2002 x11-wm/e16utils||2014-04-18|Has expired: Unmaintained since 2002 misc/salias||2014-04-18|Has expired: Unmaintained since 2002 print/latex2slides||2014-04-18|Has expired: Unmaintained since 2002 lang/sxm||2014-04-18|Has expired: Unmaintained since 2002 textproc/pybook||2014-04-18|Has expired: Unmaintained since 2002 mail/mailcrypt||2014-04-18|Has expired: Unmaintained since 2002 japanese/elvis||2014-04-18|Has expired: Unmaintained since 2002 devel/prototype||2014-04-18|Has expired: Unmaintained since 2002 print/wprint||2014-04-18|Has expired: Unmaintained since 2002 science/euler||2014-04-18|Has expired: Unmaintained since 2002 multimedia/gopchop||2014-04-18|Has expired: Unmaintained since 2002 science/gdis||2014-04-18|Has expired: Unmaintained since 2002 net/googolplex||2014-04-18|Has expired: Unmaintained since 2002 lang/logo||2014-04-18|Has expired: Unmaintained since 2002 textproc/roap||2014-04-18|Has expired: Unmaintained since 2002 x11-wm/afterstep-i18n||2014-04-18|Has expired: Unmaintained since 2002 games/yamsweeper||2014-04-18|Has expired: Unmaintained since 2002 net-mgmt/echolot||2014-04-18|Has expired: Unmaintained since 2002 security/pam_smb||2014-04-18|Has expired: Unmaintained since 2002 devel/lua-redis-parser||2014-04-18|Has expired: Broken for more than 6 months biology/finchtv||2014-04-18|Has expired: Broken for more than 6 months net-im/ari-yahoo||2014-04-18|Has expired: Broken for more than 1 year (http://www.icculus.org/ari-yahoo/) www/sams||2014-04-21|Depends on PHP 4 which was removed two years ago x11-toolkits/vdkbuilder||2014-04-22|Abandonware, not stage friendly emulators/mupen64-sdlinput|emulators/mupen64plus-input-sdl|2014-04-24|Has expired: Use mupen64plus instead emulators/mupen64-sdlaudio|emulators/mupen64plus-audio-sdl|2014-04-24|Has expired: Use mupen64plus instead emulators/mupen64-tr64||2014-04-24|Has expired: Use mupen64plus instead emulators/mupen64-gln64||2014-04-24|Has expired: Use mupen64plus instead emulators/mupen64-sound||2014-04-24|Has expired: Use mupen64plus instead emulators/mupen64-rsp||2014-04-24|Has expired: Use mupen64plus instead emulators/mupen64-input||2014-04-24|Has expired: Use mupen64plus instead emulators/mupen64-glide|emulators/mupen64plus-video-glide64|2014-04-24|Has expired: Use mupen64plus instead emulators/mupen64|emulators/mupen64plus|2014-04-24|Has expired: Use mupen64plus instead emulators/mupen64-softgfx||2014-04-24|Has expired: Use mupen64plus instead emulators/mupen64-dummyaudio||2014-04-24|Has expired: Use mupen64plus instead emulators/mupen64-base|emulators/mupen64plus-core|2014-04-24|Has expired: Use mupen64plus instead x11/emu||2014-04-24|Has expired: Broken, not staged lang/ruby-doc-stdlib||2014-04-24|Has expired: Upstream rerolls frequently, online docs work well emulators/mupen64-rice|emulators/mupen64plus-video-rice|2014-04-24|Removed, part of removed mupen64 devel/otrs|www/otrs|2014-04-28|OTRS is actually web based ticket system and it has nothing with development audio/cantus_3||2014-04-28|Broken for a while, does not build with modern compilers multimedia/xfce4-xmms-plugin||2014-04-28|Has expired: Abandonware, and can't select another player instead XMMS multimedia/xmms-weasel||2014-04-28|Has expired: Abandonware, please consider using multimedia/audacious instead audio/xmms-sexyspc||2014-04-28|Has expired: Abandonware, please consider using multimedia/audacious instead audio/libmusicbrainz4|audio/libmusicbrainz5|2014-04-28|Has expired: Please use audio/libmusicbrainz5 instead science/netcdf-ftn|science/netcdf-fortran|2014-05-03|Use science/netcdf-fortran instead science/netcdf3-ftn|science/netcdf-fortran|2014-05-03|Use science/netcdf-fortran instead science/netcdf4|science/netcdf|2014-05-03|Use science/netcdf instead x11-toolkits/gigi||2014-05-04|Has expired: Does not compile on 10 or higher net/asterisk-oh323||2014-05-04|Has expired: Depends on broken and unsupported asterisk14 net/asterisk14||2014-05-04|Has expired: Broken and unsupported net/asterisk14-addons||2014-05-04|Has expired: Depends on broken and unsupported asterisk14 ports-mgmt/pkg_install||2014-05-04|Has expired: Replaced by ports-mgmt/pkg x11-drivers/xf86-input-magictouch||2014-05-04|Has expired: Does not compile x11-drivers/xf86-video-cyrix||2014-05-04|Has expired: requires pciVideoPtr typedef x11-drivers/xf86-video-sis-intel||2014-05-04|Has expired: requires pciVideoPtr typedef net/py-spreadmodule||2014-05-04|Has expired: Depends on expired net/spread net/p5-Spread-Message||2014-05-04|Has expired: Depends on expired net/spread net/p5-POE-Component-Spread||2014-05-04|Has expired: Depends on expired net/spread net/p5-Spread-Session||2014-05-04|Has expired: Depends on expired net/spread lang/ml-pnet||2014-05-04|Has expired: Alpha-quality abandonware - Decommissioned Dec 2012 - Use mono lang/treecc||2014-05-04|Has expired: PNET dependency decommissioned Dec 2012 lang/pnetlib||2014-05-04|Has expired: Alpha-quality abandonware - Decommissioned Dec 2012 - Use mono lang/pnet-base||2014-05-04|Has expired: Alpha-quality abandonware - Decommissioned Dec 2012 - Use mono benchmarks/pnetmark||2014-05-04|Has expired: PNET dependency decommissioned Dec 2012 lang/pnet||2014-05-04|Has expired: Alpha-quality abandonware - Decommissioned Dec 2012 - Use mono sysutils/cpupowerd||2014-05-04|Has expired: Not maintained from upstream anymore and only supports ancient AMD K8 net/pchar||2014-05-04|Has expired: Obsolete, abandoned x11-fonts/texcm-ttf||2014-05-04|Has expired: Should be replaced by x11-fonts/stix-fonts devel/buildapp||2014-05-05|Has expired: Broken for more than 6 months converters/konwert||2014-05-05|Broken with modern compilers, not staged, no upstream graphics/gimp-gap||2014-05-05|Broken with gimp 2.8, no release in 5 years games/gnome-games-extra-data||2014-05-05|Not used in GNOME 3 audio/libshout2|audio/libshout|2014-05-05|Use audio/libshout instead devel/bsdlibdwarf||2014-05-06|Has expired: Outdated, included in all supported versions of FreeBSD security/yassl|security/cyassl|2014-05-06|Moved to match upstream name lang/open-cobol|lang/gnu-cobol|2014-05-07|Moved to match upstream name change sysutils/lire||2014-05-11|Project is dead net/ipfw-graph||2014-05-11|Project is dead java/linux-sun-jre16||2014-05-11|Has expired: Unsupported and known for multiple security vulnerabilities java/linux-sun-jdk16||2014-05-11|Has expired: Unsupported and known for multiple security vulnerabilities ports-mgmt/pver||2014-05-11|Has expired: does not support pkgng databases/firebird20-client|databases/firebird25-client|2014-05-11|Firebird 2.0 is EOLed databases/firebird20-server|databases/firebird25-server|2014-05-11|Firebird 2.0 is EOLed editors/ved||2014-05-15|Has expired: Depends on deprecated smake japanese/chasen||2014-05-15|Has expired: Unmaintained since 2001 www/openx|www/revive-adserver|2014-05-15|Upstream obsolete, forked security/clamav-devel||2014-05-16|Retire, older than security/clamav devel/msp430-gcc3||2014-05-18|Version obsolete, use devel/msp430-gcc graphics/GraphicsMagick12|graphics/GraphicsMagick13|2014-05-20|Has expired: Unmaintained upstream, no ports depending on it. Use graphics/GraphicsMagick13 instead net-im/tkabber-devel|net-im/tkabber|2014-05-23|Has expired: Unfetchable, outdated by net-im/tkabber devel/libglade-java||2014-05-26|Has expired: Unmaintained, outdated, not depended on lang/lua|lang/lua51|2014-05-26|Rename to allow multiple version of lua to coexist math/py-graphtool||2014-05-27|Has expired: Broken for more than 6 months devel/clint||2014-05-27|Has expired: Broken for more than 6 months x11-toolkits/libgtk-java||2014-05-27|Has expired: Unmaintained, outdated, not depended on graphics/cairo-java||2014-05-27|Has expired: Unmaintained, outdated, not depended on devel/libgconf-java||2014-05-27|Has expired: Unmaintained, outdated, not depended on x11/libgnome-java||2014-05-27|Has expired: Unmaintained, outdated, not depended on security/calife-devel||2014-05-28|Replaced by security/calife sysutils/synergy-devel||2014-05-30|Replaced by sysutils/synergy net-im/vicq||2014-05-30|Has expired: Unmaintained, outdated, not depended on net-im/mercury||2014-05-31|Has expired: MSN is dying and the domain mercury.im is down german/bsdgroup-firefox-searchplugin||2014-05-31|Has expired: bsdgroup.de no longer seems to exist german/bsdforen-firefox-searchplugin||2014-05-31|Has expired: No longer works after forum software update lang/ocaml-doc||2014-06-01|Has expired: Documentation is now included in lang/ocaml lang/ocaml-examples||2014-06-01|Has expired: Outdated and discontinued; new examples are in lang/ocaml lang/gnat-aux|lang/gcc-aux|2014-06-01|Has expired: superseded by gcc4.9-based lang/gcc-aux, use it instead lang/python31|lang/python33|2014-06-01|Has expired: Python 3.1 will be end-of-life soon, please migrate to lang/python33 net/cvsup-mirror||2014-06-01|Removed: www, doc, gnats, ports repo gone; src repo deprecated multimedia/shell-fm||2014-06-02|Has expired: Unusable, subscription radio streaming service will come to an end security/py-posix1e|security/py-pylibacl|2014-06-03|Duplicate of security/py-pylibacl www/mediawiki120||2014-06-08|Has expired: Not maintained upstream x11-drivers/input-wacom|x11-drivers/xf86-input-wacom|2014-06-11|Following the usual naming of X.Org input drivers editors/libreoffice-ca_XV|editors/libreoffice-ca_valencia|2014-06-11|Port has been renamed editors/libreoffice-ku||2014-06-11|Not provided anymore since LibreOffice 4.2 editors/libreoffice-sh||2014-06-11|Not provided anymore since LibreOffice 4.2 net/callweaver||2014-06-12|Project is dead net-im/openfire-devel||2014-06-13|Removed databases/py-cmemcache||2014-06-15|Has expired: Deprecated upstream games/mangos||2014-06-15|Has expired: Broken for more than 6 months lang/clojure-contrib||2014-06-15|Has expired: monolithic contrib library is obsolete devel/bzapi||2014-06-15|Has expired: Bugzilla has a native REST API, see https://wiki.mozilla.org/BMO/REST graphics/GraphicsMagick13|graphics/GraphicsMagick|2014-06-17|Removed, duplicate of unversioned GraphicsMagick port textproc/m17n-contrib|devel/m17n-db|2014-06-18|m17n-contrib was incorporated into m17n-db www/xpi-deepestsender||2014-06-18|Upstream disappeared, not working with modern Mozilla applications devel/tortoisehg2|devel/tortoisehg|2014-06-20|Port has been renamed german/bugzilla40|german/bugzilla44|2014-06-21|Removed, localized version of expired devel/bugzilla40 german/bugzilla42|german/bugzilla44|2014-06-21|Removed, localized version of expired devel/bugzilla42 japanese/bugzilla40|japanese/bugzilla44|2014-06-21|Removed, localized version of expired devel/bugzilla40 japanese/bugzilla42|japanese/bugzilla44|2014-06-21|Removed, localized version of expired devel/bugzilla42 russian/bugzilla40|russian/bugzilla44|2014-06-21|Removed, localized version of expired devel/bugzilla40 russian/bugzilla42|russian/bugzilla44|2014-06-21|Removed, localized version of expired devel/bugzilla42 mail/sastatd|sysutils/p5-Tail-Stat|2014-06-21|Has expired: Superseded by sysutils/p5-Tail-Stat www/mod_ruby||2014-06-21|Has expired: Only for threadless Ruby textproc/eruby|www/rubygem-erubis|2014-06-21|Has expired: Only for threadless ruby, use ruby-gem erubis instead mail/p5-FuzzyOcr|mail/p5-FuzzyOcr-devel|2014-06-21|Has expired: Unmaintained upstream, no ports depending on it. Use mail/p5-FuzzyOcr-devel instead devel/bugzilla40|devel/bugzilla44|2014-06-21|Has expired devel/bugzilla42|devel/bugzilla44|2014-06-21|Has expired sysutils/sysupdate||2014-06-21|Removed, no longer needed/relevant with FreeBSD in SVN www/phpbb-devel|www/phpbb3|2014-06-22|Has expired: Use www/phpbb3 instead math/polymake||2014-06-22|Has expired: Does not build with any supported version of Perl www/phpsysinfo-dev|www/phpsysinfo|2014-06-22|Has expired: Use www/phpsysinfo instead print/pkg-texinfo|print/texinfo-minimal|2014-06-24|Has been renamed sysutils/pc-sysinstall|sysutils/pcbsd-utils|2014-06-24|Removed: pc-sysinstall is included in sysutils/pcbsd-utils print/texinfo-minimal|print/texinfo-lite|2014-06-24|Has been renamed devel/gmake-minimal|devel/gmake-lite|2014-06-24|Has been renamed converters/mule-ucs||2014-06-27|Removed: dependent on editors/emacs21 devel/elib-emacs21||2014-06-27|Removed: dependent on editors/emacs21 editors/apel-emacs21||2014-06-27|Removed: dependent on editors/emacs21 editors/apel-emacs22||2014-06-27|Removed: dependent on editors/emacs22 editors/emacs21||2014-06-27|Removed: unmaintained upstream editors/emacs22||2014-06-27|Removed: unmaintained upstream editors/flim-emacs21||2014-06-27|Removed: dependent on editors/emacs21 editors/flim-emacs22||2014-06-27|Removed: dependent on editors/emacs22 editors/semi-emacs21||2014-06-27|Removed: dependent on editors/emacs21 editors/semi-emacs22||2014-06-27|Removed: dependent on editors/emacs22 irc/riece-emacs21||2014-06-27|Removed: dependent on editors/emacs21 japanese/emacs-emcws||2014-06-27|Removed: dependent on editors/emacs21 japanese/lookup-emacs21||2014-06-27|Removed: dependent on editors/emacs21 japanese/migemo-emacs21||2014-06-27|Removed: dependent on editors/emacs21 japanese/migemo-emacs22||2014-06-27|Removed: dependent on editors/emacs22 mail/c-sig-emacs21||2014-06-27|Removed: dependent on editors/emacs21 mail/wanderlust-emacs21||2014-06-27|Removed: dependent on editors/emacs21 mail/wanderlust-emacs22||2014-06-27|Removed: dependent on editors/emacs22 math/emacs-calc||2014-06-27|Removed: dependent on editors/emacs21 textproc/uim-el-emacs21||2014-06-27|Removed: dependent on editors/emacs21 textproc/uim-el-emacs22||2014-06-27|Removed: dependent on editors/emacs22 textproc/yaml-mode.el-emacs21||2014-06-27|Removed: dependent on editors/emacs21 www/emacs-w3m-emacs21||2014-06-27|Removed: dependent on editors/emacs21 www/emacs-w3m-emacs22||2014-06-27|Removed: dependent on editors/emacs22 devel/ode-devel|devel/ode|2014-06-27|Has expired: Outdated by devel/ode java/eclipse-devel|java/eclipse|2014-06-29|Concentrate maintenance effort on newer java/eclipse textproc/ruby-hikidoc|textproc/rubygem-hikidoc|2014-06-29|Use textproc/rubygem-hikidoc instead textproc/metaf2xml|science/metaf2xml|2014-06-30|Moved to a more appropriate category on maintainer request www/trac-TracDuplicates||2014-06-30|Has expired: Broken for more than 5 months mail/hotwayd||2014-06-30|Has expired: Protocol changed, software unusable mail/ilohamail-devel||2014-06-30|Has expired: Upstream disappeared games/tyrquake||2014-06-30|Has expired: Broken for more than 5 months net/gkrellmqst||2014-06-30|Has expired: GKrellM 1.X is no longer being developed, consider using 2.X security/p5-Jifty-Plugin-OpenID||2014-06-30|Has expired: Broken for more than 5 months games/sumwars||2014-06-30|Has expired: Broken for more than 5 months audio/ruby-esound||2014-06-30|Has expired: Broken for more than 5 months x11-toolkits/py-pyqwt||2014-06-30|Has expired: Broken for more than 5 months net-im/ysm||2014-06-30|Has expired: Broken for more than 5 months net/p5-Jifty-Plugin-Authentication-Ldap||2014-06-30|Has expired: Broken for more than 5 months net-p2p/bittyrant||2014-06-30|Has expired: Broken for more than 5 months sysutils/gkrellm||2014-06-30|Has expired: GKrellM 1.X is no longer being developed, consider using 2.X audio/gkrellmms||2014-06-30|Has expired: GKrellM 1.X is no longer being developed, consider using 2.X audio/gkrellmvolume||2014-06-30|Has expired: GKrellM 1.X is no longer being developed, consider using 2.X misc/gkrellmlaunch||2014-06-30|Has expired: GKrellM 1.X is no longer being developed, consider using 2.X misc/gkrellmfmonitor||2014-06-30|Has expired: GKrellM 1.X is no longer being developed, consider using 2.X misc/gkrellshoot||2014-06-30|Has expired: GKrellM 1.X is no longer being developed, consider using 2.X polish/sms2||2014-06-30|Has expired: sms2 is no longer being developed, consider using alternative software x11-toolkits/py-wmdockapps||2014-06-30|Has expired: Crufty and nothing depends on this audio/tagger||2014-06-30|Has expired: Ancient, unmaintained www/mod_wsgi2|www/mod_wsgi3|2014-06-30|Has expired: No longer supported, please use www/mod_wsgi3 instead security/botan|security/botan110|2014-06-30|Has expired: Botan 1.8 have known bugs and is no longer supported upstream, migrate to security/botan110 deskutils/checkrdf||2014-06-30|Removed: Abandonware, please consider using other software graphics/k3d||2014-06-30|Has expired: Broken for more than 5 months mail/cyrus-imapd2|mail/cyrus-imapd24|2014-06-30|Has expired: Cyrus IMAPd 2.1.X have been deprecated, consider using 2.4.X mail/cyrus-imapd22|mail/cyrus-imapd24|2014-06-30|Has expired: No further releases of 2.2.X are planned, consider using 2.4.X editors/xemacs||2014-06-30|Removed: unmaintained upstream editors/xemacs-devel||2014-06-30|Removed: unmaintained upstream chinese/xemacs||2014-06-30|Removed: unmaintained upstream editors/flim-xemacs21-mule||2014-06-30|Removed: depend on editors/xemacs editors/semi-xemacs21-mule||2014-06-30|Removed: depend on editors/xemacs editors/xemacs-devel-mule||2014-06-30|Removed: depend on editors/xemacs-devel editors/xemacs-mule-packages||2014-06-30|Removed: depend on editors/xemacs editors/xemacs-packages||2014-06-30|Removed: depend on editors/xemacs editors/xemacs21-mule||2014-06-30|Removed: depend on editors/xemacs japanese/migemo-xemacs-devel-mule||2014-06-30|Removed: depend on editors/xemacs-devel japanese/xemacs21-canna||2014-06-30|Removed: depend on editors/xemacs mail/emh-xemacs21-mule||2014-06-30|Removed: depend on editors/xemacs mail/wanderlust-xemacs21-mule||2014-06-30|Removed: depend on editors/xemacs textproc/dictem-xemacs21-mule||2014-06-30|Removed: depend on editors/xemacs textproc/uim-el-xemacs21-mule||2014-06-30|Removed: depend on editors/xemacs www/emacs-w3m-xemacs21-mule||2014-06-30|Removed: depend on editors/xemacs security/sudosh3||2014-07-01|Has expired: Funcition replaced by sudo -s security/sudosh||2014-07-01|Has expired: Funcition replaced by sudo -s security/sudosh2||2014-07-01|Has expired: Funcition replaced by sudo -s lang/pike76|lang/pike78|2014-07-01|Has expired: Outdated: Users should switch to lang/pike78 editors/gummi||2014-07-01|Has expired: Builds fine but the program itself is unusable archivers/rpm|archivers/rpm4|2014-07-03|rpm3 is long EOLed, rpm4 is the default rpm archivers for most of linux distributions x11-clocks/wmitime||2014-07-04|Has expired x11/xorg-edit||2014-07-04|Has expired: Depends on older version of wxGTK net/ttbudget||2014-07-06|Has expired: does not build, mastersite disapperead, not staged sysutil/psgconf||2014-07-06|Removed: abandonware print/texinfo-lite|print/indexinfo|2014-07-06|Replaced by indexinfo to handle info page index audio/linnya||2014-07-07|Deprecated upstream databases/slony1|databases/slony1v2|2014-07-07|Unsupported: consider using slony1 v2 instead lang/see-devel|lang/see|2014-07-07|lang/see is up to date no need for see-devel net-p2p/libtorrent-devel||2014-07-07|libtorrent port has newer version, use that instead net-p2p/rtorrent-devel||2014-07-07|rtorrent port has newer version, use that instead net-im/qxmpp-leechcraft|net-im/qxmpp|2014-07-09|Removed:qxmpp-leechcraft is now merged into qxmpp textproc/stardict-BritannicaConcise||2014-07-10|Removed due to possible copyright infringement textproc/stardict-MerrianWebster||2014-07-10|Removed due to possible copyright infringement textproc/stardict-OxfordCollocation||2014-07-10|Removed due to possible copyright infringement textproc/stardict-longman||2014-07-10|Removed due to possible copyright infringement textproc/stardict-oald||2014-07-10|Removed due to possible copyright infringement editors/nxml||2014-07-13|Needs recently removed emacs21 or emacs22 graphics/py-stl|graphics/py-stltools|2014-07-13|Upstream project has been renamed audio/muine||2014-07-13|Has expired: Fails to build/run since August 2013 x11-themes/kde4-windeco-nitrogen||2014-07-14|Has expired: Merged with the Oxygen windeco included with KDE4 net/linphone-base||2014-07-14|Split into separate components databases/py-simplecouchdb||2014-07-15|Has expired: Obsolete, abandoned audio/xmms-bonk||2014-07-15|Has expired: Obsolete experimental codec, use audio/flac or audio/wavpack audio/bonk||2014-07-15|Has expired: Obsolete experimental codec, use audio/flac or audio/wavpack sysutils/gtk-send-pr||2014-07-17|Has expired: Obsolete after migration to Bugzilla lang/stklos||2014-07-20|Has expired: Fails testsuite on all platforms, unmaintained upstream lang/ikarus||2014-07-20|Has expired: Upstream project died in 2009 security/pam_pgina||2014-07-20|Has expired: main site disappeared, no more public distfiles www/linux-opera-devel|www/opera|2014-07-20|Has expired: Not staged and multiple vulnerabilities www/opera-devel|www/opera|2014-07-20|Has expired: Not staged, multiple vulnerabilities, older than non-devel accessibility/at-poke||2014-07-21|Has expired: Depends on expired libgailgnome misc/bigboard||2014-07-21|Has expired: gnome-panel will be updated to the 3.x version which is not compatible with 2.x net/desktop-data-model||2014-07-21|Has expired: gnome-desktop 2.x will be updated in the GNOME 3 import net/online-desktop||2014-07-21|Has expired: Disappeared upstream, depends on expired ports x11-toolkits/libgail-gnome||2014-07-21|Has expired: gnome-panel 2.x will be updated in the GNOME 3 import security/gnutls3|security/gnutls|2014-07-22|Moved to replace GnuTLS 2.x port print/latex-ifluatex|print/texlive-texmf|2014-07-23|Has been incorporated into texlive-texmf print/teTeX|print/texlive-full|2014-07-23|Replaced by texlive print/passivetex|print/tex-xmltex|2014-07-23|Has been incorporated in TeXLive version of xmltex print/xmltex|print/tex-xmltex|2014-07-23|Replaced by texlive print/latex-caption|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/xdvik|print/tex-xdvik|2014-07-23|Replaced by texlive print/latex-subfloat|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-circ|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-prettyref|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-nomencl|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-mathabx|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-arydshln|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-feynmf|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-chapterfolder|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-cjk|print/texlive-base|2014-07-23|Has been incorporated in TeXLive print/latex-aastex|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-biblatex|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-biblist|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-bytefield|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-csquotes|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-etoolbox|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-keystroke|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-logpap|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-logreq|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-pgf|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-supertabular|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-svninfo|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-tipa|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/latex-ucs|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive print/teTeX-base|print/texlive-base|2014-07-23|Has been incorporated in TeXLive print/teTeX-texmf|print/texlive-texmf|2014-07-23|Has been incorporated in TeXLive japanese/xdvik|print/tex-xdvik|2014-07-23|Use TeXLive version japanese/latex2html||2014-07-23|Depends on decomissioned teTeX japanese/platex209||2014-07-23|Depends on decomissioned teTeX japanese/platex-jsclasses||2014-07-23|Depends on decomissioned teTeX japanese/platex-otf||2014-07-23|Depends on decomissioned teTeX japanese/jadetex-ptex|japanese/tex-ptex|2014-07-23|Use TeXLive version japanese/dvipsk|print/tex-dvipsk|2014-07-23|Use TeXLive version print/dvipsk-tetex|print/tex-dvipsk|2014-07-23|Use TeXLive version print/dvipdfmx|print/tex-dvipdfmx|2014-07-23|Use TeXLive version print/jadetex|print/tex-jadetex|2014-07-23|Use TeXLive version japanese/teTeX|print/texlive-full|2014-07-23|Use TeXLive chinese/big5con||2014-07-24|Has expired: Fails to build with new utmpx chinese/hztty||2014-07-24|Has expired: Fails to build with new utmpx irc/solid-ircd||2014-07-24|Has expired: Fails to build with new utmpx korean/eterm||2014-07-24|Has expired: Fails to build with new utmpx mail/biffer||2014-07-24|Has expired: Fails to build with new utmpx misc/c-hey||2014-07-24|Has expired: Fails to build with new utmpx misc/wminfo||2014-07-24|Has expired: Fails to build with new utmpx net/sendfile||2014-07-24|Has expired: Fails to build with new utmpx net-im/centericq||2014-07-24|Has expired: Fails to build with new utmpx security/openfwtk||2014-07-24|Has expired: Fails to build with new utmpx security/pam_alreadyloggedin||2014-07-24|Has expired: Fails to build with new utmpx security/srp||2014-07-24|Has expired: Fails to build with new utmpx security/sud||2014-07-24|Has expired: Fails to build with new utmpx sysutils/hyperic-sigar||2014-07-24|Has expired: Fails to build with new utmpx sysutils/lookupd||2014-07-24|Has expired: Fails to build with new utmpx sysutils/lookupd_ldap||2014-07-24|Has expired: Fails to build with new utmpx sysutils/p5-Sys-Utmp||2014-07-24|Has expired: Fails to build with new utmpx sysutils/syslog-ng2||2014-07-24|Has expired: Fails to build with new utmpx sysutils/yawho||2014-07-24|Has expired: Fails to build with new utmpx devel/p5-MetaCPAN-API|devel/p5-MetaCPAN-Client|2014-07-27|Has expired: Use devel/p5-MetaCPAN-Client instead net-im/pidgin-facebookchat||2014-07-27|Has expired: obsolete, development has ceased, not staged net-im/gtkyahoo||2014-07-28|Has expired: Broken, unmaintained, unstaged, gtk12, i386 only devel/cl-cffi-clisp||2014-07-28|Has expired: Depends on deprecated lang/clisp devel/cl-alexandria-clisp||2014-07-28|Has expired: Depends on deprecated lang/clisp converters/cl-babel-clisp||2014-07-28|Has expired: Depends on deprecated lang/clisp devel/cl-infix-clisp||2014-07-28|Has expired: Depends on deprecated lang/clisp devel/meta-cvs||2014-07-28|Has expired: Depends on deprecated lang/clisp textproc/cl-meta-clisp||2014-07-28|Has expired: Depends on deprecated lang/clisp www/cl-lml-clisp||2014-07-28|Has expired: Depends on deprecated lang/clisp devel/cl-trivial-features-clisp||2014-07-28|Has expired: Depends on deprecated lang/clisp security/cl-md5-clisp||2014-07-28|Has expired: Depends on deprecated lang/clisp devel/cl-port-clisp||2014-07-28|Has expired: Depends on deprecated lang/clisp textproc/cl-ppcre-clisp||2014-07-28|Has expired: Depends on deprecated lang/clisp devel/cl-asdf-clisp||2014-07-28|Has expired: Depends on deprecated lang/clisp devel/cl-split-sequence-clisp||2014-07-28|Has expired: Depends on deprecated lang/clisp devel/cl-trivial-gray-streams-clisp||2014-07-28|Has expired: Depends on deprecated lang/clisp lang/clisp||2014-07-28|Has expired: development has ceased, not staged print/texpower|print/texlive-texmf|2014-07-28|Has been incorporated in TeXLive print/tex-mfpic|print/texlive-texmf|2014-07-28|Has been incorporated in TeXLive lang/sml-nj-devel|lang/smlnj|2014-07-30|The -devel was updated and is now production-ready lang/sml-nj|lang/smlnj|2014-07-30|Use lang/smlnj as newer version www/ajaxplorer|www/pydio|2014-07-31|Project renamed converters/igbinary|converters/pecl-igbinary|2014-07-31|The project has been moved to PECL mail/postfix27||2014-07-31|Has expired: No longer supported by upstream misc/freecode-submit||2014-07-31|Has expired: This software is obsolete. Freecode does not accept updates anymore mail/exim-doc-info||2014-07-31|Has expired: yes misc/gman||2014-07-31|Has expired: Depends on expiring ghostview print/ghostview|print/gv|2014-07-31|Has expired: project dead nearly a decade ago; use print/gv instead mail/getlive||2014-08-01|Has expired: GetLive project has been declared dead due to MS account conversion print/ifxetex||2014-08-01|Has expired: Very outdated and fully contained in texlive-texmf lang/dragonegg46-33||2014-08-01|Has expired: Dead upstream, impractical to build on 10 and later lang/dragonegg47-33||2014-08-01|Has expired: Dead upstream, impractical to build on 10 and later print/freetype-tools|print/texlive-texmf|2014-08-01|Has been incorporated in TeXLive sysutils/readlink||2014-08-03|Has expired: All features implemented in the base system since FreeBSD 8.3 net-mgmt/bsd-airtools||2014-08-04|Has expired: broken by removal of wicontrol ioctls from if_wavelan_ieee.h; domain disappeared www/moodle||2014-08-04|Has expired: Upstream support ended databases/bucardo|databases/p5-Bucardo|2014-08-04|Duplicate port removed security/p5-openxpki-client|security/p5-openxpki|2014-08-04|Has expired: now incorporated within security/p5-openxpki security/p5-openxpki-client-scep|security/p5-openxpki|2014-08-04|Has expired: now incorporated within security/p5-openxpki security/p5-openxpki-deployment|security/p5-openxpki|2014-08-04|Has expired: now incorporated within security/p5-openxpki news/husky-base-devel||2014-08-05|Has been incorporated into the build process of other husky-*-devel ports archivers/hs-zlib-conduit||2014-08-10|Removed: Deprecated in favor of conduit-extra devel/hs-IORefCAS||2014-08-10|Removed: Deprecated in favor of atomic-primops devel/hs-Tensor||2014-08-10|Removed: Deprecated devel/hs-attempt||2014-08-10|Removed: Deprecated in favor of exceptions devel/hs-base64-conduit||2014-08-10|Removed: Deprecated in favor of conduit-combinators devel/hs-blaze-builder-conduit||2014-08-10|Removed: Deprecated in favor of conduit-extra devel/hs-drift|devel/hs-DrIFT|2014-08-10|Renamed: Converted to use the Cabal framework devel/hs-failure||2014-08-10|Removed: Deprecated in favor or exceptions devel/hs-filesystem-conduit||2014-08-10|Removed: Deprecated in favor of conduit-combinators devel/hs-haskeline||2014-08-10|Removed: Become part of GHC devel/hs-pool-conduit||2014-08-10|Removed: Deprecated in favor of resource-pool devel/hs-profunctor-extras||2014-08-10|The package has been absorbed into profunctors devel/hs-terminfo||2014-08-10|Removed: Become part of GHC devel/hs-transformers||2014-08-10|Removed: Become part of GHC math/hs-comonad-transformers||2014-08-10|Deprecated in favor of comonad math/hs-comonads-fd||2014-08-10|Deprecated in favor of comonad math/hs-groupoids||2014-08-10|Deprecated in favor of semigroupoids math/hs-semigroupoid-extras||2014-08-10|Deprecated in favor of semigroupoids net/hs-network-conduit||2014-08-10|Removed: Deprecated in favor of conduit-extra security/hs-tls-extra||2014-08-10|Removed: Deprecated in favor of tls textproc/hs-attoparsec-conduit||2014-08-10|Removed: Deprecated in favor of conduit-extra textproc/hs-xhtml||2014-08-10|Removed: Become part of GHC www/hs-hamlet||2014-08-10|Removed: Deprecated in favor of shakespeare www/hs-shakespeare-css||2014-08-10|Removed: Deprecated in favor of shakespeare www/hs-shakespeare-i18n||2014-08-10|Removed: Deprecated in favor of shakespeare www/hs-shakespeare-js||2014-08-10|Removed: Deprecated in favor of shakespeare www/hs-shakespeare-text||2014-08-10|Removed: Deprecated in favor of shakespeare www/hs-wai-test||2014-08-10|Removed: Deprecated in favor of wai-extra devel/rubygem-foreman_api||2014-08-11|Removed: Deprecated by upstream security/termlog||2014-08-11|Has expired: Fails to build with new utmpx, unstaged, maintainer timeout games/linux-americasarmy||2014-08-13|Removed: Unsupported by upstream, distfile unavailable devel/kyua-atf-compat|devel/kyua|2014-08-14|Upstream merged all components into devel/kyua devel/kyua-cli|devel/kyua|2014-08-14|Upstream merged all components into devel/kyua devel/kyua-testers|devel/kyua|2014-08-14|Upstream merged all components into devel/kyua devel/glib-java||2014-08-14|Has expired: Unmaintained, outdated not depend on www/phpgedview|www/webtrees|2014-08-15|Has expired: superseded by www/webtrees graphics/luxrays||2014-08-15|Has expired: No longer needed as luxrender bundles its own verion now net-mgmt/cflowd||2014-08-15|Has expired: Unmaintained 10 years, requires dozens of patches, unverifiable archivers/unzip-iconv|archivers/unzip|2014-08-15|Merged with archivers/unzip as a new non-default option chinese/unzip|archivers/unzip|2014-08-15|Merged with archivers/unzip as a new non-default option korean/unzip|archivers/unzip|2014-08-15|Merged with archivers/unzip as a new non-default option russian/unzip|archivers/unzip|2014-08-15|Merged with archivers/unzip as a new non-default option mail/sendmail-sasl|mail/sendmail|2014-08-15|Removed: Use mail/sendmail instead print/cups-samba||2014-08-15|Removed: defunct for long, disappeared upstream databases/db4|databases/db48|2014-08-15|Superseded by databases/db48 databases/db41|databases/db48|2014-08-15|Superseded by databases/db48 databases/db41-nocrypto|databases/db48|2014-08-15|Superseded by databases/db48 databases/db42|databases/db48|2014-08-15|Superseded by databases/db48 databases/db42-nocrypto|databases/db48|2014-08-15|Superseded by databases/db48 databases/db43|databases/db48|2014-08-15|Superseded by databases/db48 databases/db44|databases/db48|2014-08-15|Superseded by databases/db48 databases/db46|databases/db48|2014-08-15|Superseded by databases/db48 databases/db47|databases/db48|2014-08-15|Superseded by databases/db48 security/sguil-client|security/sguil|2014-08-16|Merged into new port security/sguil security/sguil-sensor|security/sguil|2014-08-16|Merged into new port security/sguil security/sguil-server|security/sguil|2014-08-16|Merged into new port security/sguil databases/jasperserver||2014-08-18|Has expired: Unstaged, depends on expiring devel/maven2 devel/maven2|devel/maven3|2014-08-18|Has expired: No longer supported by the Apache Foundation. Use 3.x instead x11-clocks/alarm-clock||2014-08-18|Removed: disappeared upstream mail/rss2email|mail/rss2email2|2014-08-19|Renamed to avoid ambiguity with mail/rss2email3 news/husky-base||2014-08-19|Obsolete due to husky-*-devel => husky-* migration news/husky-bsopack||2014-08-19|Obsolete due to husky-*-devel => husky-* migration news/husky-hptkill||2014-08-19|Obsolete due to husky-*-devel => husky-* migration news/husky-hptsqfix||2014-08-19|Obsolete due to husky-*-devel => husky-* migration news/husky-hpucode||2014-08-19|Obsolete due to husky-*-devel => husky-* migration news/husky-msged||2014-08-19|Obsolete due to husky-*-devel => husky-* migration news/husky-nltools||2014-08-19|Obsolete due to husky-*-devel => husky-* migration net/rsmb|net/mosquitto|2014-08-19|Superseded by net/mosquitto deskutils/horde3-hermes||2014-08-20|Has expired: EOL in April 2012 deskutils/horde3-klutz||2014-08-20|Has expired: EOL in April 2012 deskutils/horde3-kronolith||2014-08-20|Has expired: EOL in April 2012 deskutils/horde3-mnemo||2014-08-20|Has expired: EOL in April 2012 devel/horde3-chora||2014-08-20|Has expired: EOL in April 2012 ftp/horde3-gollem||2014-08-20|Has expired: EOL in April 2012 games/linux-steam||2014-08-20|Has expired: Unmaintained interactive port games/linux-ut2004-demo||2014-08-20|Has expired: Unmaintained restricted ancient demo mail/horde3-dimp||2014-08-20|Has expired: EOL in April 2012 mail/horde3-forwards||2014-08-20|Has expired: EOL in April 2012 mail/horde3-ingo||2014-08-20|Has expired: EOL in April 2012 mail/horde3-mimp||2014-08-20|Has expired: EOL in April 2012 mail/horde3-vacation||2014-08-20|Has expired: EOL in April 2012 net-mgmt/horde3-nic||2014-08-20|Has expired: EOL in April 2012 net-mgmt/nocol||2014-08-20|Has expired: Unmaintained interactive port net-mgmt/ourmon||2014-08-20|Has expired: Unmaintained interactive port net/wowzamediaserverpro||2014-08-20|Has expired: Unmaintained interactive port news/p5-NNML||2014-08-20|Has expired: Unmaintained interactive port print/dvips||2014-08-20|Has expired: Unmaintained interactive port print/xdvi||2014-08-20|Has expired: Unmaintained interactive port security/horde3-jeta||2014-08-20|Has expired: EOL in April 2012 security/hunch||2014-08-20|Has expired: Likely unused interactive port www/horde3-ansel||2014-08-20|Has expired: EOL in April 2012 www/horde3-meta||2014-08-20|Has expired: EOL in April 2012 www/horde3-passwd||2014-08-20|Has expired: EOL in April 2012 www/horde3-trean||2014-08-20|Has expired: EOL in April 2012 www/wwwcount||2014-08-20|Has expired: Ancient interactive port mail/horde3-turba||2014-08-20|Has expired: EOL in April 2012 deskutils/horde3-nag||2014-08-20|Has expired: EOL in April 2012 devel/horde3-whups||2014-08-20|Has expired: EOL in April 2012 mail/horde3-imp||2014-08-20|Has expired: EOL in April 2012 www/horde3-base||2014-08-20|Has expired: EOL in April 2012 print/tex-omegaware-old||2014-08-22|Deprecated in favor of print/tex-aleph databases/pg_filedump||2014-08-22|Has expired: Broken for more than 6 months devel/svnmerge||2014-08-22|Has expired: Broken for more than 6 months net-mgmt/circe||2014-08-22|Has expired: Broken for more than 6 months print/latex-aa||2014-08-22|Has expired: Broken for more than 6 months textproc/rast||2014-08-22|Has expired: Broken for more than 6 months www/abyssws||2014-08-22|Has expired: Broken for more than 6 months www/docebo||2014-08-22|Has expired: Not maintained upstream devel/rubygem-railsless-deploy||2014-08-22|Removed: Obsolete, Capistrano 3 does not ship with any Railsisms and is better than Capistrano 2 and railsless-deploy lang/gcc410|lang/gcc5|2014-08-22|Renamed to GCC 5 upstream security/pam_abl||2014-08-24|Has expired: Newer version requires large number of hacks, not worth the effort www/rubygem-feedzirra|www/rubygem-feedjira|2014-08-24|Has expired: Project renamed upstream, see www/rubygem-feedjira devel/picosat|math/picosat|2014-08-25|More appropriate primary category devel/py-pycosat|math/py-pycosat|2014-08-25|More appropriate primary category games/bomns3|games/3omns|2014-08-26|Has expired: Development ceased, use 3omns misc/rubygem-mime-types117|misc/rubygem-mime-types1|2014-08-26|Renamed to properly reflect version devel/rubygem-json146|devel/rubygem-json|2014-08-28|Has expired: Old version no longer required by dependencies archivers/rubygem-bzip2|archivers/rubygem-bzip2-ruby|2014-08-29|Rename to match our rubygem- port naming ports-mgmt/pkg_add_it||2014-08-30|Has expired: Does not support pkgng print/dviselect|print/texlive-base|2014-08-30|Use print/texlive-base instead chinese/acroread8-zh_CN||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix chinese/acroread8-zh_TW||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix french/acroread8||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix french/acroread9||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix german/acroread8||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix german/acroread9||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix japanese/acroread8||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix japanese/acroread9||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix korean/acroread8||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix portuguese/acroread8||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix print/acroread8||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix print/acroread9||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix print/acroreadwrapper||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix print/dk-acroread8||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix print/es-acroread8||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix print/fi-acroread8||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix print/it-acroread8||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix print/nl-acroread8||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix print/no-acroread8||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix print/sv-acroread8||2014-08-30|Deprecated: many security issues are reported and Adobe no longer actively supports Adobe Reader for Unix net-p2p/p5-Net-DirectConnect-TigerHash||2014-08-31|Broken for many months and security/p5-Crypt-RHash is a suitable replacement games/childsplay_plugins||2014-08-31|Plugins package is no longer created for new versions of childsplay print/tex-texmflocal||2014-08-31|Removed: no longer required for TeXLive audio/emu10kx||2014-09-01|Not staged audio/festvox-us1-mbrola||2014-09-01|Not staged audio/festvox-us2-mbrola||2014-09-01|Not staged audio/festvox-us3-mbrola||2014-09-01|Not staged audio/ipod-sharp||2014-09-01|Not staged audio/linux-musicipserver||2014-09-01|Not staged audio/liquidsoap||2014-09-01|Not staged benchmarks/spec-sfs||2014-09-01|Not staged biology/blast||2014-09-01|Not staged biology/embassy||2014-09-01|Not staged cad/scv||2014-09-01|Not staged cad/systemc||2014-09-01|Not staged chinese/cmexfonts||2014-09-01|Not staged chinese/cwtex||2014-09-01|Not staged chinese/hanzim||2014-09-01|Not staged chinese/miniChinput||2014-09-01|Not staged chinese/moefonts-cid||2014-09-01|Not staged chinese/msttf||2014-09-01|Not staged chinese/pine4||2014-09-01|Not staged chinese/xsim||2014-09-01|Not staged chinese/zhcon||2014-09-01|Not staged comms/gammu-devel||2014-09-01|Not staged databases/cyrus-imspd||2014-09-01|Not staged databases/db4o-mono||2014-09-01|Not staged databases/dbXML||2014-09-01|Not staged databases/exist||2014-09-01|Not staged databases/flare||2014-09-01|Not staged databases/hk_classes||2014-09-01|Not staged databases/lsdb||2014-09-01|Not staged databases/msql3||2014-09-01|Not staged databases/mysqlcppapi||2014-09-01|Not staged databases/ocaml-pgocaml||2014-09-01|Not staged databases/pear-Doctrine12||2014-09-01|Not staged databases/ruby-msql||2014-09-01|Not staged databases/ruby-oci8||2014-09-01|Not staged deskutils/adesklets||2014-09-01|Not staged deskutils/org-mode.el||2014-09-01|Not staged deskutils/planner.el||2014-09-01|Not staged deskutils/remember.el||2014-09-01|Not staged devel/asdlgen||2014-09-01|Not staged devel/ats-contrib-testing||2014-09-01|Not staged devel/e4graph||2014-09-01|Not staged devel/eclipse-eclemma||2014-09-01|Not staged devel/elib||2014-09-01|Not staged devel/entity||2014-09-01|Not staged devel/flowdesigner||2014-09-01|Not staged devel/gjstest||2014-09-01|Not staged devel/jzmq||2014-09-01|Not staged devel/libslave||2014-09-01|Not staged devel/linux-kmod-compat||2014-09-01|Not staged devel/ml-doc||2014-09-01|Not staged devel/nemiver||2014-09-01|Not staged devel/ocaml-event||2014-09-01|Not staged devel/ocamlweb||2014-09-01|Not staged devel/p4db||2014-09-01|Not staged devel/p5-Alzabo-GUI-Mason||2014-09-01|Not staged devel/php-java-bridge||2014-09-01|Not staged devel/pmk||2014-09-01|Not staged devel/pure-gen||2014-09-01|Not staged devel/ruby-amstd||2014-09-01|Not staged devel/ruby-avl||2014-09-01|Not staged devel/ruby-robjectteam||2014-09-01|Not staged devel/sfslite-dbg||2014-09-01|Not staged devel/sfslite-noopt||2014-09-01|Not staged devel/sfslite||2014-09-01|Not staged devel/sml_tk||2014-09-01|Not staged devel/stlport||2014-09-01|Not staged devel/sunterlib||2014-09-01|Not staged devel/tide||2014-09-01|Not staged devel/uppaal||2014-09-01|Not staged devel/ustl||2014-09-01|Not staged devel/vtg||2014-09-01|Not staged dns/poweradmin||2014-09-01|Not staged editors/color-mate||2014-09-01|Not staged editors/gnuserv||2014-09-01|Not staged editors/jext||2014-09-01|Not staged editors/komodo-ide||2014-09-01|Not staged editors/setedit||2014-09-01|Not staged editors/softmaker-office||2014-09-01|Not staged editors/textedit||2014-09-01|Not staged emulators/its||2014-09-01|Not staged emulators/linux-geepee32||2014-09-01|Not staged emulators/linux-systemsimcell||2014-09-01|Not staged emulators/psim-freebsd||2014-09-01|Not staged emulators/vMac||2014-09-01|Not staged finance/opentaxsolver||2014-09-01|Not staged french/facturier||2014-09-01|Not staged games/actx||2014-09-01|Not staged games/atitd||2014-09-01|Not staged games/avp-demo||2014-09-01|Not staged games/linux-sof||2014-09-01|Not staged games/quake3-freezetag||2014-09-01|Not staged games/rftg||2014-09-01|Not staged german/manpages||2014-09-01|Not staged graphics/Cgraph||2014-09-01|Not staged graphics/glide3||2014-09-01|Not staged graphics/ivtools||2014-09-01|Not staged graphics/linux_glide||2014-09-01|Not staged graphics/mingplot||2014-09-01|Not staged graphics/orca||2014-09-01|Not staged graphics/php5-chartdirector||2014-09-01|Not staged graphics/ruby-rmagick||2014-09-01|Not staged graphics/uDrawGraph||2014-09-01|Not staged graphics/visionworkbench||2014-09-01|Not staged irc/bobot++||2014-09-01|Not staged japanese/flex-sdk||2014-09-01|Not staged japanese/gqmpeg||2014-09-01|Not staged japanese/ja6||2014-09-01|Not staged japanese/lambdamoo||2014-09-01|Not staged japanese/makejvf||2014-09-01|Not staged japanese/mell||2014-09-01|Not staged japanese/mendexk-euc||2014-09-01|Not staged japanese/platex-japanese||2014-09-01|Not staged japanese/postgresql82-man||2014-09-01|Not staged japanese/prime-el||2014-09-01|Not staged japanese/rbnamazu||2014-09-01|Not staged java/jai-imageio||2014-09-01|Not staged java/jboss5||2014-09-01|Not staged java/jc||2014-09-01|Not staged java/poseidon||2014-09-01|Not staged lang/Sather||2014-09-01|Not staged lang/gnustep-guile||2014-09-01|Not staged lang/hiphop-php||2014-09-01|Not staged lang/lush||2014-09-01|Not staged lang/metaocaml||2014-09-01|Not staged lang/mpd||2014-09-01|Not staged lang/ocaml-mode.el||2014-09-01|Not staged lang/ocs||2014-09-01|Not staged lang/oorexx||2014-09-01|Not staged lang/rakudo||2014-09-01|Not staged lang/sml-mode.el||2014-09-01|Not staged lang/sr||2014-09-01|Not staged lang/t3x||2014-09-01|Not staged lang/xds-c||2014-09-01|Not staged lang/xds||2014-09-01|Not staged lang/xotcl||2014-09-01|Not staged mail/elm+ME||2014-09-01|Not staged mail/emh||2014-09-01|Not staged mail/extmail||2014-09-01|Not staged mail/extman||2014-09-01|Not staged mail/ezmlm-web||2014-09-01|Not staged mail/firemime||2014-09-01|Not staged mail/firepay||2014-09-01|Not staged mail/ftrack||2014-09-01|Not staged mail/ilohamail||2014-09-01|Not staged mail/majordomo||2014-09-01|Not staged mail/p3scan||2014-09-01|Not staged mail/popd||2014-09-01|Not staged mail/popper||2014-09-01|Not staged mail/postfix-gps||2014-09-01|Not staged mail/postfix28||2014-09-01|Not staged mail/postfix29||2014-09-01|Not staged mail/postpals||2014-09-01|Not staged mail/premail||2014-09-01|Not staged mail/qmail-scanner1||2014-09-01|Not staged mail/qmail-scanner||2014-09-01|Not staged mail/qscan||2014-09-01|Not staged mail/quickml||2014-09-01|Not staged mail/rabl_client||2014-09-01|Not staged mail/rabl_server||2014-09-01|Not staged mail/relay-ctrl||2014-09-01|Not staged mail/reply-o-matic||2014-09-01|Not staged mail/sccmilter||2014-09-01|Not staged mail/softfail||2014-09-01|Not staged mail/spmfilter-spamassassin||2014-09-01|Not staged mail/synonym||2014-09-01|Not staged mail/uebimiau||2014-09-01|Not staged mail/vm-pop3d||2014-09-01|Not staged mail/vm||2014-09-01|Not staged mail/wmpop3lb||2014-09-01|Not staged mail/xf-spf||2014-09-01|Not staged math/atlas-devel||2014-09-01|Not staged math/bihar||2014-09-01|Not staged math/itl||2014-09-01|Not staged math/javanns||2014-09-01|Not staged math/javaview||2014-09-01|Not staged math/jsmath-fonts-sprite||2014-09-01|Not staged math/jsmath||2014-09-01|Not staged math/kash3||2014-09-01|Not staged math/matrix||2014-09-01|Not staged math/sdpa-gmp||2014-09-01|Not staged math/sedumi||2014-09-01|Not staged math/unixstat||2014-09-01|Not staged misc/amanda25-client||2014-09-01|Not staged misc/amanda25-server||2014-09-01|Not staged misc/amanda26-client||2014-09-01|Not staged misc/amanda26-server||2014-09-01|Not staged misc/amanda32-client||2014-09-01|Not staged misc/amanda32-server||2014-09-01|Not staged misc/callid||2014-09-01|Not staged misc/color-theme.el||2014-09-01|Not staged misc/dotfile||2014-09-01|Not staged misc/libhome||2014-09-01|Not staged misc/mshell||2014-09-01|Not staged misc/quranref||2014-09-01|Not staged misc/tet||2014-09-01|Not staged misc/xfce4-artwork||2014-09-01|Not staged multimedia/clive1||2014-09-01|Not staged multimedia/mplayerxp||2014-09-01|Not staged multimedia/tunapie||2014-09-01|Not staged net-im/gyach||2014-09-01|Not staged net-im/iserverd||2014-09-01|Not staged net-im/jabber-pyaim||2014-09-01|Not staged net-im/komclean||2014-09-01|Not staged net-im/libjingle||2014-09-01|Not staged net-im/linpopup||2014-09-01|Not staged net-mgmt/argus-monitor||2014-09-01|Not staged net-mgmt/aspathtree||2014-09-01|Not staged net-mgmt/bigsister||2014-09-01|Not staged net-mgmt/cisco_conf||2014-09-01|Not staged net-mgmt/fruity||2014-09-01|Not staged net-mgmt/ifgraph||2014-09-01|Not staged net-mgmt/ipacco||2014-09-01|Not staged net-mgmt/macroscope||2014-09-01|Not staged net-mgmt/nagios-check_kumofs||2014-09-01|Not staged net-mgmt/nagios-portaudit||2014-09-01|Not staged net-mgmt/nagios-silfreed-plugins||2014-09-01|Not staged net-mgmt/nagiostat||2014-09-01|Not staged net-mgmt/netams-front||2014-09-01|Not staged net-mgmt/ramond||2014-09-01|Not staged net-mgmt/rancid-devel||2014-09-01|Not staged net-mgmt/satellite||2014-09-01|Not staged net-mgmt/wide-dhcp||2014-09-01|Not staged net-mgmt/yabm||2014-09-01|Not staged net-mgmt/zenpack-checkping||2014-09-01|Not staged net-mgmt/zenpack-dellmon||2014-09-01|Not staged net-mgmt/zenpack-deviceadvdetail||2014-09-01|Not staged net-mgmt/zenpack-devicesearch||2014-09-01|Not staged net-mgmt/zenpack-grap||2014-09-01|Not staged net-mgmt/zenpack-interfacegraphs||2014-09-01|Not staged net-mgmt/zenpack-libvirt||2014-09-01|Not staged net-mgmt/zenpack-macreport||2014-09-01|Not staged net-p2p/azureus2||2014-09-01|Not staged net-p2p/linux-jigdo||2014-09-01|Not staged net-p2p/mldonkey-perlreactor||2014-09-01|Not staged net-p2p/mldonkey-urlslave||2014-09-01|Not staged net-p2p/museekplus||2014-09-01|Not staged net-p2p/opennap||2014-09-01|Not staged net-p2p/solidcoin||2014-09-01|Not staged net-p2p/teknap||2014-09-01|Not staged net-p2p/vhcp||2014-09-01|Not staged net/DarwinStreamingServer||2014-09-01|Not staged net/acx100||2014-09-01|Not staged net/bcusdk-eibd||2014-09-01|Not staged net/blam||2014-09-01|Not staged net/bld||2014-09-01|Not staged net/click||2014-09-01|Not staged net/cnet||2014-09-01|Not staged net/cnupm||2014-09-01|Not staged net/ct||2014-09-01|Not staged net/entitymib||2014-09-01|Not staged net/freedbd||2014-09-01|Not staged net/frickin||2014-09-01|Not staged net/hawknl-devel||2014-09-01|Not staged net/hawknl||2014-09-01|Not staged net/heybuddy||2014-09-01|Not staged net/ipa_ipfw||2014-09-01|Not staged net/iscsi-target||2014-09-01|Not staged net/kojoney||2014-09-01|Not staged net/libtcp4u||2014-09-01|Not staged net/mediaproxy||2014-09-01|Not staged net/mknbi||2014-09-01|Not staged net/mmucl||2014-09-01|Not staged net/ncplib||2014-09-01|Not staged net/ng_daphne||2014-09-01|Not staged net/openam||2014-09-01|Not staged net/openmcu||2014-09-01|Not staged net/openser||2014-09-01|Not staged net/pfflowd||2014-09-01|Not staged net/quagga-re||2014-09-01|Not staged net/rexx-sock||2014-09-01|Not staged net/ris||2014-09-01|Not staged net/rshell||2014-09-01|Not staged net/samba4wins||2014-09-01|Not staged net/ser||2014-09-01|Not staged net/silc-client||2014-09-01|Not staged net/silc-irssi-plugin||2014-09-01|Not staged net/silc-server||2014-09-01|Not staged net/skyfish||2014-09-01|Not staged net/skystar2||2014-09-01|Not staged net/tac_plus-libradius||2014-09-01|Not staged net/ushare||2014-09-01|Not staged net/v6eval||2014-09-01|Not staged net/vchat||2014-09-01|Not staged net/vserver||2014-09-01|Not staged net/wire||2014-09-01|Not staged net/wired-tracker||2014-09-01|Not staged net/wired||2014-09-01|Not staged net/xbone||2014-09-01|Not staged net/xipdump||2014-09-01|Not staged net/xorp-devel||2014-09-01|Not staged palm/iSiloXC||2014-09-01|Not staged palm/py-synce-librapi2||2014-09-01|Not staged palm/py-synce-librra||2014-09-01|Not staged palm/synce-librapi2||2014-09-01|Not staged palm/synce-librra||2014-09-01|Not staged ports-mgmt/bxpkg||2014-09-01|Not staged ports-mgmt/pkgfe||2014-09-01|Not staged ports-mgmt/prhistory||2014-09-01|Not staged print/bophook||2014-09-01|Not staged print/examplep||2014-09-01|Not staged print/latex-acm||2014-09-01|Not staged print/latex-auto-greek||2014-09-01|Not staged print/latex-timing||2014-09-01|Not staged print/latex||2014-09-01|Not staged print/pdfcolorsplit||2014-09-01|Not staged print/pdq||2014-09-01|Not staged print/phppdflib||2014-09-01|Not staged print/ruby-panda||2014-09-01|Not staged print/scribus-devel||2014-09-01|Not staged russian/libcyrillic||2014-09-01|Not staged russian/prawda||2014-09-01|Not staged russian/pscyr||2014-09-01|Not staged russian/tac+ia||2014-09-01|Not staged science/2dhf||2014-09-01|Not staged science/dtiquery||2014-09-01|Not staged science/elmer-hutiter||2014-09-01|Not staged science/elmerpost||2014-09-01|Not staged science/g3data||2014-09-01|Not staged science/gamess||2014-09-01|Not staged science/minc||2014-09-01|Not staged science/psi3||2014-09-01|Not staged science/x11iraf||2014-09-01|Not staged science/xmds||2014-09-01|Not staged security/bioapi||2014-09-01|Not staged security/bsp_upektfmess||2014-09-01|Not staged security/distcache-devel||2014-09-01|Not staged security/mosref||2014-09-01|Not staged security/openvpn-beta||2014-09-01|Not staged security/pam_bsdbioapi||2014-09-01|Not staged security/php-Auth_OpenID2||2014-09-01|Not staged security/php-Auth_OpenID||2014-09-01|Not staged security/php-openid-ldap||2014-09-01|Not staged security/scannedonly||2014-09-01|Not staged security/tinysu||2014-09-01|Not staged sysutils/asapm||2014-09-01|Not staged sysutils/asr-utils||2014-09-01|Not staged sysutils/be_agent||2014-09-01|Not staged sysutils/bubblemon-dockapp||2014-09-01|Not staged sysutils/clockspeed-conf||2014-09-01|Not staged sysutils/comconsole||2014-09-01|Not staged sysutils/comiccron||2014-09-01|Not staged sysutils/contool||2014-09-01|Not staged sysutils/cromwell||2014-09-01|Not staged sysutils/cvsweb-converters||2014-09-01|Not staged sysutils/eroaster||2014-09-01|Not staged sysutils/freqsdwn||2014-09-01|Not staged sysutils/gnomebaker||2014-09-01|Not staged sysutils/ispman||2014-09-01|Not staged sysutils/jailuser||2014-09-01|Not staged sysutils/linux-afaapps||2014-09-01|Not staged sysutils/netident||2014-09-01|Not staged sysutils/news||2014-09-01|Not staged sysutils/nut22||2014-09-01|Not staged sysutils/nvtv||2014-09-01|Not staged sysutils/penv||2014-09-01|Not staged sysutils/pmap||2014-09-01|Not staged sysutils/replicant||2014-09-01|Not staged sysutils/sbniconfig||2014-09-01|Not staged sysutils/upsd||2014-09-01|Not staged sysutils/wmapm||2014-09-01|Not staged sysutils/xsi||2014-09-01|Not staged textproc/ats-contrib-parcomb||2014-09-01|Not staged textproc/coco||2014-09-01|Not staged textproc/lemmatizer2||2014-09-01|Not staged textproc/openvanilla-modules||2014-09-01|Not staged textproc/publican||2014-09-01|Not staged textproc/ruby-html-fillinform||2014-09-01|Not staged textproc/ruby-html-template||2014-09-01|Not staged textproc/sgmltools-lite||2014-09-01|Not staged textproc/sml-fxp||2014-09-01|Not staged textproc/tei-guidelines-p3||2014-09-01|Not staged textproc/tei-p3||2014-09-01|Not staged vietnamese/vntex||2014-09-01|Not staged vietnamese/vnxfonts||2014-09-01|Not staged vietnamese/xvnkb||2014-09-01|Not staged www/aria||2014-09-01|Not staged www/aswedit||2014-09-01|Not staged www/bk2site||2014-09-01|Not staged www/bluefish-devel||2014-09-01|Not staged www/bugmenot-firefox||2014-09-01|Not staged www/cacheboy16||2014-09-01|Not staged www/cakephp12||2014-09-01|Not staged www/cas||2014-09-01|Not staged www/dokeos||2014-09-01|Not staged www/dwoo||2014-09-01|Not staged www/elog||2014-09-01|Not staged www/eyeos-themes||2014-09-01|Not staged www/eyeos||2014-09-01|Not staged www/firefox-remote||2014-09-01|Not staged www/foswiki-ModPerlEngineContrib||2014-09-01|Not staged www/free-sa||2014-09-01|Not staged www/harvest||2014-09-01|Not staged www/htmlobject||2014-09-01|Not staged www/lusca-head||2014-09-01|Not staged www/mod_auth_form||2014-09-01|Not staged www/mod_auth_mellon||2014-09-01|Not staged www/mod_ftp||2014-09-01|Not staged www/mod_log_dbd||2014-09-01|Not staged www/moodle24||2014-09-01|Not staged www/plugger-plugins-hubbe||2014-09-01|Not staged www/prado||2014-09-01|Not staged www/quixote||2014-09-01|Not staged www/ruboard||2014-09-01|Not staged www/ruby-div||2014-09-01|Not staged www/snownews||2014-09-01|Not staged www/squirm||2014-09-01|Not staged www/xapian-omega10||2014-09-01|Not staged x11-drivers/xf86-video-rdc||2014-09-01|Not staged x11-themes/bluecurve-themes||2014-09-01|Not staged x11-themes/cursor-bluecurve-theme||2014-09-01|Not staged x11-themes/gnome-bluecurve-theme||2014-09-01|Not staged x11-themes/icon-bluecurve-theme||2014-09-01|Not staged x11-themes/icons-buuf||2014-09-01|Not staged x11-themes/kde-icons-crystal-project||2014-09-01|Not staged x11-themes/kde-icons-nuovext||2014-09-01|Not staged x11-themes/kde-icons-os-k||2014-09-01|Not staged x11-themes/kde-icons-vista-inspirate||2014-09-01|Not staged x11-themes/metacity-bluecurve-theme||2014-09-01|Not staged x11-toolkits/paragui-devel||2014-09-01|Not staged x11-wm/sapphire||2014-09-01|Not staged x11-themes/gtk-bluecurve-theme||2014-09-01|Not staged biology/phd2fasta||2014-09-01|Not staged databases/kumofs||2014-09-01|Not staged devel/lxr||2014-09-01|Not staged devel/scsh-install-lib||2014-09-01|Not staged games/qix||2014-09-01|Not staged games/vdrift||2014-09-01|Not staged net-mgmt/zenpack-graphportlet||2014-09-01|Not staged www/webcalendar-devel|www/webcalendar|2014-09-04|Removed, use www/webcalendar instead devel/ruby-memoize||2014-09-06|Has expired: RubyForge shutdown May 15 2014 www/oops||2014-09-06|Development stops long ago, domain has been expired net/freeswitch-core-devel||2014-09-06|Not staged net/freeswitch-devel||2014-09-06|Not staged audio/freeswitch-sounds||2014-09-06|Not staged audio/freeswitch-music||2014-09-06|No purpose after unstaged freeswitch ports removed devel/eieio||2014-09-06|Not staged devel/semantic||2014-09-06|Not staged editors/speedbar||2014-09-06|Not staged japanese/tk80||2014-09-06|Not staged japanese/tcl80||2014-09-06|Not staged japanese/tkhonyaku||2014-09-06|Cascade removal (ja-tcl/tk80 dependency) japanese/timidity++-tcltk||2014-09-06|Cascade removal (ja-tcl/tk80 dependency) japanese/prime||2014-09-06|Not staged japanese/suikyo||2014-09-06|Not staged japanese/prime-dict||2014-09-06|Not staged japanese/scim-prime||2014-09-06|Cascade removal (japanese/prime dependency) graphics/povray31||2014-09-06|Not staged graphics/pvmpov||2014-09-06|Cascade removal (graphics/povray31) databases/firebird21-server||2014-09-06|Not staged databases/firebird21-client||2014-09-06|Not staged databases/kinterbasdb||2014-09-07|Has expired: Not staged and BROKEN databases/msql||2014-09-07|Has expired: Not staged and BROKEN multimedia/pvr250||2014-09-07|Has expired: Not staged and BROKEN multimedia/pvrxxx||2014-09-07|Has expired: Not staged and BROKEN textproc/py-4suite-xml||2014-09-07|Has expired: Not staged net/libexosip2-legacy|net/libexosip2|2014-09-07|Has expired: Superseded by net/libexosip2 net/libosip|net/libosip2|2014-09-07|Has expired: Superseded by net/libosip2 lang/caml-light||2014-09-07|Not staged devel/pybaz||2014-09-07|Obsolete, use devel/bzr instead devel/baz||2014-09-07|Unstaged, obsolete, distfiles don't exist. Use devel/bzr instead security/prelude-lml||2014-09-07|Not staged security/prelude-manager||2014-09-07|Not staged security/prelude-pflogger||2014-09-07|Not staged lang/otcl||2014-09-07|Not staged devel/tclcl||2014-09-07|Cascade removal (lang/otcl) net/nam||2014-09-07|Cascade removal (lang/otcl) net/ns||2014-09-07|Cascade removal (lang/otcl) databases/frontbase||2014-09-07|Not staged databases/p5-DBD-FrontBase||2014-09-07|Cascade removal (databases/frontbase) databases/ruby-frontbase||2014-09-07|Cascade removal (databases/frontbase) devel/flex-sdk2||2014-09-07|Not staged devel/flex_compiler_shell||2014-09-07|Cascade removal (devel/flex-sdk2) emulators/virtualbox-ose-legacy||2014-09-09|Not staged emulators/virtualbox-ose-kmod-legacy||2014-09-09|No purpose after removal of virtualbox-ose-legacy devel/arm-eabi-gcc||2014-09-09|Not staged devel/cross-gcc||2014-09-09|Not staged devel/arm-eabi-binutils||2014-09-09|No purpose after removal of arm-eabi-gcc sysutils/u-boot-beaglebone-eabi||2014-09-09|Cascade removal (devel/arm-eabi-gcc) lang/ezm3||2014-09-09|Not staged net/cvsup-without-gui||2014-09-09|Cascade removal (lang/ezm3) net/cvsupchk||2014-09-09|Cascade removal (lang/ezm3) net/cvsup||2014-09-09|Cascade removal (lang/ezm3) dns/posadis||2014-09-09|Not staged net/etherboot||2014-09-09|Not staged games/linux-savage||2014-09-09|Not staged lang/ifc||2014-09-09|Not staged japanese/rskkserv||2014-09-09|Not staged graphics/passepartout||2014-09-09|Not staged lang/scsh||2014-09-10|Not staged net-mgmt/zenoss||2014-09-10|Not staged archivers/mate-file-archiver|archivers/engrampa|2014-09-10|renamed deskutils/mate-menu-editor|deskutils/mozo|2014-09-10|renamed editors/mate-text-editor|editors/pluma|2014-09-10|renamed graphics/mate-document-viewer|graphics/atril|2014-09-10|renamed graphics/mate-image-viewer|graphics/eom|2014-09-10|renamed x11-fm/mate-file-manager|x11-fm/caja|2014-09-10|renamed x11-wm/mate-window-manager|x11-wm/marco|2014-09-10|renamed deskutils/mate-character-map||2014-09-10|removed deskutils/mate-file-manager-open-terminal||2014-09-10|removed security/libmatekeyring||2014-09-10|removed security/mate-keyring||2014-09-10|removed textproc/mate-doc-utils||2014-09-10|removed x11-toolkits/libmatewnck||2014-09-10|removed net/ruby-net-geoip|net/rubygem-geoip|2014-09-13|Has expired: Broken www/bannerfilter||2014-09-16|Depends on www/squid (v2.7) which is two years past EOL www/dansguardian||2014-09-16|Depends on www/squid (v2.7) which is two years past EOL www/dansguardian-devel||2014-09-16|Depends on www/squid (v2.7) which is two years past EOL www/videocache||2014-09-16|Depends on www/squid (v2.7) which is two years past EOL www/squid32||2014-09-16|Readed EOL on 14 August 2012 net/ruby-growl|net/rubygem-ruby-growl|2014-09-20|Renamed sysutils/moreutils-parallel|sysutils/moreutils|2014-09-20|Has expired: Use moreutils-parallel in sysutils/moreutils instead science/ruby-netcdf||2014-09-20|Has expired: Depends on deprecated math/ruby-narray x11-toolkits/ruby-fox16||2014-09-20|Has expired: RubyForge shutdown May 15 2014 math/ruby-gnuplot||2014-09-20|Has expired: Depends on deprecated math/ruby-narray science/ruby-gphys||2014-09-20|Has expired: Depends on deprecated math/ruby-narray math/ruby-fftw3||2014-09-20|Has expired: Depends on deprecated math/ruby-narray science/ruby-dcl||2014-09-20|Has expired: Depends on deprecated math/ruby-narray math/ruby-numru_misc||2014-09-20|Has expired: Depends on deprecated math/ruby-narray math/ruby-narray||2014-09-20|Has expired: RubyForge shutdown May 15 2014 textproc/ruby-liquid||2014-09-20|Has expired: RubyForge shutdown May 15 2014 comms/callsign||2014-09-20|Has expired: RubyForge shutdown May 15 2014 misc/ruby-vpim||2014-09-20|Has expired: RubyForge shutdown May 15 2014 net/ruby-ldap||2014-09-20|Has expired: RubyForge shutdown May 15 2014 devel/rubygem-echoe||2014-09-20|Has expired: Depends on deprecated rubyforge www/ruby-borges||2014-09-20|Has expired: RubyForge shutdown May 15 2014 www/ruby-fcgiwrap||2014-09-20|Has expired: RubyForge shutdown May 15 2014 www/rubygem-scrubyt||2014-09-20|Has expired: RubyForge shutdown May 15 2014 devel/ruby-multi||2014-09-20|Has expired: RubyForge shutdown May 15 2014 databases/ruby-dbd_sqlite3|databases/rubygem-dbd-sqlite3|2014-09-20|Replaced by rubygem-dbd-sqlite math/ruby-gsl||2014-09-20|Has expired: RubyForge shutdown May 15 2014 security/ruby-gpgme||2014-09-20|Has expired: RubyForge shutdown May 15 2014 multimedia/vodcatcher||2014-09-20|Has expired: RubyForge shutdown May 15 2014 japanese/ruby-ming||2014-09-20|Has expired: RubyForge shutdown May 15 2014 devel/ruby-statgrab||2014-09-20|Has expired: RubyForge shutdown May 15 2014 security/ruby-crypt||2014-09-20|Has expired: RubyForge shutdown May 15 2014 sysutils/philesight||2014-09-20|Has expired: Depends on deprecated devel/ruby-locale2 multimedia/podcatcher||2014-09-20|Has expired: RubyForge shutdown May 15 2014 audio/ruby-mp3info||2014-09-20|Has expired: RubyForge shutdown May 15 2014 multimedia/ruby-flvtool2||2014-09-20|Has expired: RubyForge shutdown May 15 2014 audio/ruby-freedb||2014-09-20|Has expired: RubyForge shutdown May 15 2014 graphics/ruby-ming||2014-09-20|Has expired: RubyForge shutdown May 15 2014 devel/ruby-locale2||2014-09-20|Has expired: RubyForge shutdown May 15 2014 devel/rubygem-rubyforge||2014-09-20|Has expired: RubyForge shutdown May 15 2014 databases/ruby-dbd_odbc|databases/rubygem-dbd-odbc|2014-09-20|Replaced by rubygem-dbd-odbc devel/ruby-fastri||2014-09-20|Has expired: RubyForge shutdown May 15 2014 devel/ri-emacs||2014-09-20|Has expired: RubyForge shutdown May 15 2014 security/p5-openxpki-client-html-mason||2014-09-20|Has expired: security/p5-openxpki-0.15+ abandoned Mason UI technology in favor of FastCGI math/ruby-narray_miss||2014-09-20|Removed, depended on deleted math/ruby-narray games/gnomechess|games/gnome-chess|2014-09-20|Renamed to match port name www/ruby-fcgi||2014-09-20|Has expired: RubyForge shutdown May 15 2014 databases/ruby-dbi|databases/rubygem-dbi|2014-09-21|Replaced by rubygem-dbi databases/ruby-dbd_mysql|databases/rubygem-dbd-mysql|2014-09-21|Replaced by rubygem-dbd-mysql databases/ruby-dbd_pg|databases/rubygem-dbd-pg|2014-09-21|Replaced by rubygem-dbd-pg databases/ruby-dbd_sqlite|databases/rubygem-dbd-sqlite3|2014-09-21|Replaced by rubygem-dbd-sqlite3 databases/rubygem-dbd-sqlite|databases/rubygem-dbd-sqlite3|2014-09-21|Remove defunctional port, old sqlite driver for ruby is missing databases/ruby-dbd-sqlite||2014-09-21|Dysfunctional textproc/ruby-amatch|textproc/rubygem-amatch|2014-09-21|Replaced by textproc/rubygem-amatch databases/rubygem-aspectr|devel/rubygem-aspectr|2014-09-21|Change category graphics/libggi||2014-09-22|Has expired: Unmaintained upstream devel/libgii||2014-09-22|Has expired: Unmaintained upstream graphics/fpc-ggi||2014-09-22|Has expired: Unmaintained upstream graphics/linux-sdl_ttf||2014-09-22|Replaced by graphics/linux-*-sdl_ttf www/mediawiki121||2014-09-23|Has expired: Not maintained upstream sysutils/rubygem-chef-expander||2014-09-25|Has expired: Depends on broken rubygem-dep_selector sysutils/rubygem-chef-server||2014-09-25|Has expired: Depends on broken rubygem-dep_selector sysutils/rubygem-chef-solr||2014-09-25|Has expired: Depends on broken rubygem-dep_selector www/rubygem-chef-server-webui||2014-09-25|Has expired: Depends on broken rubygem-dep_selector www/rubygem-chef-server-api||2014-09-25|Has expired: Depends on broken rubygem-dep_selector databases/freetds-msdblib||2014-09-27|No longer required, now covered by databases/freetds sysutils/rubgem-bundler_ext|sysutils/rubygem-bundler_ext|2014-09-27|Renamed archivers/rpm5||2014-09-28|Has expired: Broken for more than 6 months devel/cocaine-core||2014-09-28|Has expired: Broken for more than 6 months graphics/ruby-tgif||2014-09-28|Has expired: Broken for more than 6 months net/libnet10||2014-09-30|Has expired: Superseded by net/libnet net/despoof||2014-09-30|Has expired: Depends on expired net/libnet10 sysutils/gpkgdep||2014-09-30|Has expired: Requires old pkg_info security/vida||2014-09-30|Has expired: Depends on expired net/libnet10 net/nemesis||2014-09-30|Has expired: Depends on expired net/libnet10 net-mgmt/sing||2014-09-30|Has expired: Depends on expired net/libnet10 net-mgmt/gps||2014-09-30|Has expired: Depends on expired net/libnet10 net/ttlscan||2014-09-30|Has expired: Depends on expired net/libnet10 security/zombiezapper||2014-09-30|Has expired: Depends on expired net/libnet10 dns/dnshijacker||2014-09-30|Has expired: Depends on expired net/libnet10 net/xboxproxy||2014-09-30|Has expired: Depends on expired net/libnet10 net-mgmt/scdp||2014-09-30|Has expired: Depends on expired net/libnet10 net-mgmt/angst||2014-09-30|Has expired: Depends on expired net/libnet10 security/py-otr||2014-09-30|Has expired: Abandoned upstream net-p2p/cdonkey||2014-09-30|Has expired: depends on deprecated db41 version www/rubygem-puma16||2014-10-02|Has expired: Old version no longer needed x11-toolkits/gnome-desktop-sharp20||2014-10-02|Removed, no users and depends on gnome-panel which will be removed x11-toolkits/eel||2014-10-03|Removed, doesn't build with updated gnome-desktop deskutils/gnome-main-menu||2014-10-03|Removed, because x11-toolkits/eel was removed editors/mlview||2014-10-03|Removed, because x11-toolkits/eel was removed textproc/gnome-translate||2014-10-03|Removed, because x11-toolkits/eel was removed x11/avant-window-navigator-gnome||2014-10-03|Removed doesn't build with update gnome-desktop www/moodle25||2014-10-05|Has expired: Upstream support ended astro/openmap||2014-10-07|Ten years out of date ports-mgmt/portaudit||2014-10-13|portaudit expired when pkg_tools did, use pkg audit ports-mgmt/portaudit-db||2014-10-13|portaudit expired ports-mgmt/kports-qt4||2014-10-13|portaudit expired net-mgmt/check_snmp_pkgvuln||2014-10-13|portaudit expired mail/p5-Email-Stuff|mail/p5-Email-Stuffer|2014-10-15|Has expired: Deprecated in favour of mail/p5-Email-Stuffer security/krb5-maint|security/krb5-111|2014-10-16|MIT now supports two maintenance releases of which 1.11 is the older of the two devel/rubygem-rspec-spies||2014-10-17|Has expired: Same syntax available in rspec 2.14 and later graphics/libfreehand00|graphics/libfreehand|2014-10-17|Replaced by newer version graphics/libcdr|graphics/libcdr01|2014-10-17|Replaced by newer version print/libmspub|print/libmspub01|2014-10-17|Replaced by newer version devel/py-olefileio_pl|devel/py-olefile|2014-10-17|Upstream name change audio/mad||2014-10-20|Directly use audio/libmad or audio/madplay mail/dspam-devel|mail/dspam|2014-10-20|Merged into mail/dspam dns/bind98|dns/bind99|2014-10-21|BIND 9.8 EOL dns/powerdns-devel|dns/powerdns|2014-10-24|Older than dns/powerdns and no longer needed www/mod_authz_unixgroup|www/mod_authz_unixgroup22|2014-10-26|Reflect Apache version in portsdir lang/kroc||2014-10-28|Has expired: Broken for more than 6 months net/slirp||2014-10-28|Has expired: Broken for more than 6 months www/typo347||2014-10-30|Has expired: Upgrade to www/typo3 or www/typo3-lts deskutils/babytrans||2014-10-31|Has expired: Abandonware, dictionaries unavailable www/rt38||2014-10-31|Has expired: Has expired: End of Life March 2014 textproc/libmwaw|textproc/libmwaw03|2014-10-31|Replaced by newer version databases/pecl-yac|devel/pecl-yac|2014-11-04|Duplicate port devel/qt5-qmldevtools||2014-11-05|Merged into lang/qt5-qml math/elmer-umfpack|cad/elmerfem|2014-11-07|Has expired: Obsoleted by cad/elmerfem science/elmer-eio|cad/elmerfem|2014-11-07|Has expired: Obsoleted by cad/elmerfem science/elmer-matc|cad/elmerfem|2014-11-07|Has expired: Obsoleted by cad/elmerfem science/elmer-meshgen2d|cad/elmerfem|2014-11-07|Has expired: Obsoleted by cad/elmerfem science/elmergrid|cad/elmerfem|2014-11-07|Has expired: Obsoleted by cad/elmerfem security/pinentry-gtk||2014-11-13|Removed: upstream ended support for GTK+ 1 audio/cuberok||2014-11-15|Has expired: Upstream development has stalled sysutils/cfengine36-rc|sysutils/cfengine36|2014-11-18|Has gone GA deskutils/gdesklets||2014-11-19|Depends on removed x11-toolkits/py-gnome-extra deskutils/gdesklets-recentlyused||2014-11-19|Depends on removed x11-toolkits/py-gnome-extra deskutils/gdesklets-starterbar||2014-11-19|Depends on removed x11-toolkits/py-gnome-extra deskutils/global-menu||2014-11-19|Depends on removed gnome-panel and incompatible with updated gnome-desktop deskutils/labyrinth||2014-11-19|Is not compatible with updated gnome-desktop deskutils/libopensync-plugin-evolution2||2014-11-19|Is not compatible with updated evolution deskutils/libopensync-plugin-evolution2-devel||2014-11-19|Is not compatible with updated evolution devel/bug-buddy||2014-11-19|No longer used in GNOME devel/gnome2-hacker-tools||2014-11-19|GNOME 2 was removed editors/gnome2-office||2014-11-19|GNOME 2 was removed games/gnomesudoku|games/gnome-sudoku|2014-11-19|Renamed to what the actualy name lang/vala-vapigen|lang/vala|2014-11-19|vapigen merged into vala mail/evolution-exchange|mail/evolution-ews|2014-11-19|Replaced by evolution-ews mail/gmail-notify||2014-11-19|Depends on removed x11-toolkits/py-gnome-extras math/gcalctool|math/gnome-calculator|2014-11-19|Project renamed misc/gnome2-reference||2014-11-19|GNOME 2 was removed misc/xmonad-log-applet||2014-11-19|Depends on removed gnome-panel net/gnome-netstatus||2014-11-19|Depends on removed gnome-panel security/seahorse-plugins||2014-11-19|Removed, not used in GNOME 3 sysutils/gnome-system-tools||2014-11-19|Depends on removed nautilus2 sysutils/tracker-client|sysutils/tracker|2014-11-19|Merged into sysutils/tracker sysutils/tracker-gnome|sysutils/tracker|2014-11-19|Merged into sysutils/tracker sysutils/tracker-libtrackergtk|sysutils/tracker|2014-11-19|Merged into sysutils/tracker www/epiphany-extensions||2014-11-19|Removed, not used in GNOME 3 www/evolution-webcal||2014-11-19|Not compatible with evolution 3 x11-clocks/gdesklets-clock||2014-11-19|Depends on removed x11-toolkits/py-gnome-extra x11-clocks/gdesklets-countdown||2014-11-19|Depends on removed x11-toolkits/py-gnome-extra x11-clocks/gdesklets-ebichuclock||2014-11-19|Depends on removed x11-toolkits/py-gnome-extra x11-toolkits/libpanelappletmm||2014-11-19|Depends on removed GNOME 2 ports x11-toolkits/py-gnome-desktop||2014-11-19|Depends on removed GNOME 2 ports x11-toolkits/py-gnome-extras||2014-11-19|Depends on removed GNOME 2 ports x11/gdesklets-tasklist||2014-11-19|Depends on removed x11-toolkits/py-gnome-extra x11/gnome-applets||2014-11-19|GNOME 2 was removed x11/gnome-panel||2014-11-19|GNOME 2 was removed x11/gnome-panel-reference||2014-11-19|GNOME 2 was removed x11/gnome-screensaver||2014-11-19|Is not compatible with updated gnome-desktop x11/gnome-swallow||2014-11-19|Removed, depends on removed gnome-panel x11/gnome2||2014-11-19|GNOME 2 was removed x11/gnome2-fifth-toe||2014-11-19|GNOME 2 was removed x11/gnome2-lite||2014-11-19|GNOME 2 was removed x11/gnome2-power-tools||2014-11-19|GNOME 2 was removed x11/xfce4-xfapplet-plugin||2014-11-19|Depends on removed gnome-panel net-im/telegram-cli||2014-11-19|Duplicate of net-im/tg emulators/wine-doors||2014-11-19|Abandonware, depends on non existing USE_GNOME components x11/gtstarter||2014-11-19|Abandonware, depends on non existing USE_GNOME components sysutils/serpentine||2014-11-19|Abandonware, depends on non existing USE_GNOME components sysutils/pessulus||2014-11-19|Abandonware, depends on non existing USE_GNOME components x11-toolkits/libzvt||2014-11-19|Abandonware, not depended on anymore net-p2p/gtkhx||2014-11-19|Does not work anymore korean/ami||2014-11-19|Does not work anymore graphics/xzgv||2014-11-19|Abandonware since at least 2008 deskutils/gtkjournal||2014-11-19|Abandonware, not working anymore deskutils/splashsetter||2014-11-19|Abandonware, useless without gnome2 editors/emacs23|editors/emacs|2014-11-19|Has expired: Unmaintained upstream, use editors/emacs net-im/tg|net-im/telegram|2014-11-20|Renamed to more specific name net-mgmt/virtinst|deskutils/virt-manager|2014-11-20|Obsoleted by deskutils/virt-manager graphics/linux-c6-gdk-pixbuf|graphics/linux-c6-gdk-pixbuf2|2014-11-24|Port renamed to align with upstream devel/libole2||2014-11-24|Abandoned upstream, incomplete, not depend on net/p5-SOAP-Transport-TCP|net/p5-SOAP-Lite|2014-11-24|Has been integrated into net/p5-SOAP-Lite www/chimera||2014-11-24|Has expired: Abandonware (last update in 1997), restrictive license devel/ecore|devel/efl|2014-11-25|Merged to devel/efl devel/ecore-file|devel/efl|2014-11-25|Merged to devel/efl devel/ecore-ipc|devel/efl|2014-11-25|Merged to devel/efl devel/ecore-main|devel/efl|2014-11-25|Merged to devel/efl devel/eet|devel/efl|2014-11-25|Merged to devel/efl devel/eina|devel/efl|2014-11-25|Merged to devel/efl devel/eio|devel/efl|2014-11-25|Merged to devel/efl graphics/ecore-evas|devel/efl|2014-11-25|Merged to devel/efl graphics/ecore-sdl|devel/efl|2014-11-25|Merged to devel/efl graphics/edje|devel/efl|2014-11-25|Merged to devel/efl graphics/ethumb|devel/efl|2014-11-25|Merged to devel/efl graphics/evas|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-core|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-engine-buffer|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-engine-opengl|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-engine-sdl|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-engine-x11|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-loader-bmp|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-loader-eet|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-loader-generic|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-loader-gif|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-loader-ico|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-loader-jpeg|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-loader-pmaps|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-loader-png|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-loader-psd|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-loader-svg|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-loader-tga|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-loader-tiff|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-loader-wbmp|devel/efl|2014-11-25|Merged to devel/efl graphics/evas-loader-xpm|devel/efl|2014-11-25|Merged to devel/efl lang/embryo|devel/efl|2014-11-25|Merged to devel/efl multimedia/emotion|devel/efl|2014-11-25|Merged to devel/efl net/ecore-con|devel/efl|2014-11-25|Merged to devel/efl x11/ecore-imf|devel/efl|2014-11-25|Merged to devel/efl x11/ecore-imf_evas|devel/efl|2014-11-25|Merged to devel/efl x11/ecore-input|devel/efl|2014-11-25|Merged to devel/efl x11/ecore-input_evas|devel/efl|2014-11-25|Merged to devel/efl x11/ecore-x11|devel/efl|2014-11-25|Merged to devel/efl x11/efreet|devel/efl|2014-11-25|Merged to devel/efl x11-wm/e17-module-alarm|x11-wm/e-module-alarm|2014-11-25|Renamed x11-wm/e17-module-cpu|x11-wm/e-module-cpu|2014-11-25|Renamed x11-wm/e17-module-deskshow|x11-wm/e-module-deskshow|2014-11-25|Renamed x11-wm/e17-module-diskio|x11-wm/e-module-diskio|2014-11-25|Renamed x11-wm/e17-module-everything-places|x11-wm/e-module-everything-places|2014-11-25|Renamed x11-wm/e17-module-everything-websearch|x11-wm/e-module-everything-websearch|2014-11-25|Renamed x11-wm/e17-module-forecasts|x11-wm/e-module-forecasts|2014-11-25|Renamed x11-wm/e17-module-mem|x11-wm/e-module-mem|2014-11-25|Renamed x11-wm/e17-module-mpdule|x11-wm/e-module-mpdule|2014-11-25|Renamed x11-wm/e17-module-net|x11-wm/e-module-net|2014-11-25|Renamed x11-wm/e17-module-penguins|x11-wm/e-module-penguins|2014-11-25|Renamed x11-wm/e17-module-places|x11-wm/e-module-places|2014-11-25|Renamed x11-wm/e17-module-rmb|x11-wm/e-module-rmb|2014-11-25|Renamed x11-wm/e17-module-tclock|x11-wm/e-module-tclock|2014-11-25|Renamed x11-wm/e17-module-wlan|x11-wm/e-module-wlan|2014-11-25|Renamed x11-wm/e17-modules|x11-wm/e-modules|2014-11-25|Renamed net-im/folks04||2014-11-26|Removed, no longer used after GNOME 3 merge devel/afl|security/afl|2014-11-26|Duplicate port print/latexmk|print/texlive-base|2014-11-27|Has been incorporated in TeXLive print/pdfjam|print/texlive-base|2014-11-27|Has been incorporated in TeXLive vietnamese/vnlpr||2014-11-29|Has expired: Broken for more than 6 months devel/fsmgenerator||2014-11-29|Has expired: Broken for more than 6 months graphics/multiraw||2014-11-29|Has expired: Depends on broken and deprecated graphics/dcraw-m news/fidogate-ds||2014-11-29|Has expired: Broken for more than 6 months net/py-yadis||2014-11-29|Has expired: Broken for more than 6 months textproc/ruby-diff||2014-11-29|Has expired: Broken for more than 6 months audio/cowbell||2014-11-29|Has expired: Broken for more than 6 months lang/ironpython||2014-11-29|Has expired: Broken for more than 6 months www/dpsearch||2014-11-29|Has expired: Broken for more than 6 months multimedia/y4mscaler||2014-11-29|Has expired: Broken for more than 6 months devel/rubygem-dep_selector||2014-11-29|Has expired: Broken for more than 6 months sysutils/rubygem-hiera-puppet||2014-12-01|Has expired: Has been incorporated into hiera sysutils/rubygem-hiera-json||2014-12-01|Has expired: Has been incorporated into hiera databases/memcachedb||2014-12-01|Has expired: Depends on deprecated Berkeley DB version, needs porting to DB_SITE games/djgame2||2014-12-01|Has expired: Online servers gone, game is not playable lang/clay||2014-12-01|Has expired: No development since July 2013, depends on obsolete clang-3.2 textproc/libodfgen|textproc/libodfgen01|2014-12-02|Replaced by newer version graphics/libetonyek|graphics/libetonyek01|2014-12-02|Replaced by newer version textproc/sw-hunspell|textproc/sv-hunspell|2014-12-02|Swedish is sv not sw deskutils/gnome-shell-extension-gtile||2014-12-03|Removed, doesn't work properly devel/rubygem-rb-readline||2014-12-05|Removed, not needed ports-mgmt/pib||2014-12-06|Has expired: Does not work with tcl/tk 8.4+, does not support pkgng editors/texmakerx|editors/texstudio|2014-12-06|The project has been renamed databases/postgresql93-plv8js|databases/postgresql-plv8js|2014-12-07|Breaks index when PGSQL_DEFAULT=9.3 and master port can be used for pgsql 9.3 www/twig-php||2014-12-08|Removed, as it was replaced and conflicting with www/pear-twig and www/pecl-twig textproc/xerces-c2|textproc/xerces-c3|2014-12-12|Unused, conflicting with xerces-c3 textproc/xerces-c2-devel|textproc/xerces-c3|2014-12-12|Unused, conflicting with xerces-c3 games/empire|games/vms-empire|2014-12-15|Moved to match upstream name devel/preps-gui||2014-12-15|Has expired: upstream disappeared devel/prepstools||2014-12-15|Has expired: upstream disappeared devel/llvm32||2014-12-18|Obsolete and unmaintained upstream lang/clang32||2014-12-18|Obsolete and unmaintained upstream x11-drivers/xf86-video-newport||2014-12-19|Removed: Depends on removed xorg-server 1.12 x11-drivers/xf86-video-tga||2014-12-19|Removed: Alpha support was removed in FreeBSD 7.0 x11/nvidia-driver-71||2014-12-19|Removed: Not compatible with xserver 1.14 x11/nvidia-driver-96||2014-12-19|Removed: Not compatible with xserver 1.14 www/drupal7-jailadmin||2014-12-20|Removed per author's request; unmaintained www/drupal7-vulnscan||2014-12-20|Removed per author's request; unmaintained www/neon29|www/neon|2014-12-24|Rename to reflect upstream graphics/pornview||2014-12-24|No more upstream, no more public distfile, no proper support for modern png misc/gnomehier||2014-12-25|Not needed anymore graphics/corona||2014-12-25|Abandonware, no proper support for modern png graphics/libpano12|graphics/libpano13|2014-12-25|No proper support for modern png, newer version available as libpano13 games/hex||2014-12-25|Abandonware, no support for moden graphics libraries graphics/bbrb||2014-12-25|Abandonware, depends on imlib graphics/gtkgraph||2014-12-25|Abandonware, depends on imlib graphics/imagesort||2014-12-25|Abandonware, depends on imlib graphics/picturebook||2014-12-25|Abandonware, depends on imlib graphics/show||2014-12-25|Abandonware, depends on imlib japanese/ebview|japanese/ebview-gtk2|2014-12-25|Use GTK2 version japanese/xjtext||2014-12-25|Abandonware, depends on imlib x11/peeper||2014-12-25|Abandonware, depends on imlib x11-toolkits/fpc-gnome1||2014-12-25|Depends on imlib graphics/fpc-imlib||2014-12-25|Depends on imlib graphics/imlib||2014-12-25|Does not handle modern graphics libraries games/secretmaryochronicles-music||2014-12-27|Has expired: Depends on expiring games/secretmaryochronicles x11-fm/pbi-thumbnailer||2014-12-27|Has expired: Broken for more than 6 months games/secretmaryochronicles||2014-12-27|Has expired: does not run, cegui 0.8 support still in development multimedia/ffmpeg24|multimedia/ffmpeg25|2014-12-27|ffmpeg upstream now points to 2.5.x series x11-wm/enlightenment-docs|x11-wm/e16-docs|2014-12-28|Renamed for better naming devel/py-checkmanifest|devel/py-check-manifest|2014-12-29|Use correct upstream PyPI name deskutils/xpad-current|deskutils/xpad|2014-12-30|deskutils/xpad-current is ready for prime time biology/ncbi-blast|biology/ncbi-blast+|2014-12-30|Clarify that this is blast+ and not the blast, allow for a future ncbi-blast port lang/perl5.14||2014-12-31|Has expired: Unsupported, please upgrade to a more recent version of Perl graphics/ender||2014-12-31|Has expired: Unused by EFL 1.11 graphics/enesim||2014-12-31|Has expired: Unused by EFL 1.11 graphics/etch||2014-12-31|Has expired: Unused by EFL 1.11 www/egueb||2014-12-31|Has expired: Unused by EFL 1.11 x11-wm/e17-module-comp-scale||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-eektool||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-elfe||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-empris||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-engage||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-eooorg||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-everything-aspell||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-everything-mpris||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-everything-pidgin||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-everything-shotgun||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-everything-wallpaper||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-exebuf||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-execwatch||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-flame||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-iiirk||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-itask||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-mail||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-moon||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-news||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-photo||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-rain||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-screenshot||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-slideshow||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-taskbar||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-uptime||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-weather||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-winlist-ng||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-winselector||2014-12-31|Has expired: Broken and updates aren't available x11-wm/e17-module-snow||2014-12-31|Has expired: Broken and updates aren't available biology/boinc-simap||2015-01-01|Has expired: Project shutting down, see http://boincsimap.org/boincsimap/forum_thread.php?id=88 security/openssh-portable-base||2015-01-01|Has expired: Overwrite-base option/port/pkg will be removed. There is no real need for foot-shooting devel/cedet||2015-01-01|Has expired: Fails to build, use Emacs' builtin cedet package instead devel/ecb||2015-01-01|Has expired: does not work with newer Emacs versions, use the elpa package instead devel/rubygem-little_plugger|devel/rubygem-little-plugger|2015-01-05|Rename to match our rubygem- port naming misc/nagios-base-logos||2015-01-05|Included in nagios distribution ports-mgmt/portcheckout||2015-01-06|Has expired: Uses ports cvs repo, which is long gone ports-mgmt/pkg_trackinst||2015-01-06|Has expired: Does not support pkgng, generates incorrect pkg-plist ports-mgmt/pkg_remove||2015-01-06|Has expired: Does not support pkgng ports-mgmt/pkg-orphan||2015-01-06|Has expired: Does not support pkgng ports-mgmt/p5-FreeBSD-Pkgs-FindUpdates||2015-01-06|Has expired: Depends on ports-mgmt/p5-FreeBSD-Pkgs ports-mgmt/p5-FreeBSD-Pkgs||2015-01-06|Has expired: Does not support pkgng ports-mgmt/p5-App-Pm2Port||2015-01-06|Has expired: Does not know about USES=perl, generates incorrect pkg-plist ports-mgmt/bpkg||2015-01-06|Has expired: Does not support pkgng multimedia/mplayer-fonts||2015-01-11|Obsolete port security/qca-cyrus-sasl|devel/qca|2015-01-12|Part of devel/qca now security/qca-gnupg|devel/qca|2015-01-12|Part of devel/qca now security/qca-ossl|devel/qca|2015-01-12|Part of devel/qca now games/vdrift-data||2015-01-16|vdrift engine was removed from ports four months earlier x11/rxvt-devel||2015-01-17|Has expired: No longer developed nor maintained and deprecated by x11/xvt and x11/rxvt-unicode comms/spandsp-devel|comms/spandsp|2015-01-17|Has expired: Use newer comms/spandsp multimedia/universal-media-server||2015-01-17|Has expired: RC script broken, especially prestart target www/qupzilla|www/qupzilla-qt4|2015-01-18|Renamed to differentiate from www/qupzilla-qt5 devel/p5-perlbrew|devel/p5-App-perlbrew|2015-01-19|Rename to match upstream naming devel/actor-framework|devel/caf|2015-01-19|Rename to match upstream naming textproc/py-charade||2015-01-28|Charade was merged back to textproc/py-chardet audio/qmidinet||2015-01-28|Has expired: Broken for more than 6 months audio/wmauda||2015-01-28|Has expired: Broken for more than 6 months audio/x11amp||2015-01-28|Has expired: Broken for more than 6 months devel/p5-Log-Any-Adapter|devel/p5-Log-Any|2015-01-28|Has expired: devel/p5-Log-Any-Adapter merged into devel/p5-Log-Any by upstream net-im/pidgin-audacious-remote||2015-01-28|Has expired: Broken for more than 6 months www/lifetype||2015-01-28|Has expired: Broken for more than 6 months www/ump||2015-01-28|Has expired: Broken for more than 6 months net/owncloud-csync||2015-02-01|Merged into deskutils/mirall audio/py-eyed3-06|audio/py-eyed3|2015-02-02|Has expired: In audio/abcde dependency has been changed to audio/py-eyed3 mail/postfix210|mail/postfix|2015-02-02|Has expired: Use mail/postfix instead net-im/venom||2015-02-02|Has expired: No more support from the project security/openssh-portable66|security/openssh-portable|2015-02-02|Has expired: security/openssh-portable now has all patches working. This port is obsolete www/p5-WWW-Scraper-ISBN-Driver|www/p5-WWW-Scraper-ISBN|2015-02-02|Has expired: Merged to www/p5-WWW-Scraper-ISBN by upstream www/p5-WWW-Scraper-ISBN-Record|www/p5-WWW-Scraper-ISBN|2015-02-02|Has expired: Merged to www/p5-WWW-Scraper-ISBN by upstream japanese/xlockmore|x11/xlockmore|2015-02-02|Merged into x11/xlockmore deskutils/currtime|sysutils/currtime|2015-02-03|Move to sysutils category sysutils/pcbsd-utils-qt4|sysutils/pcbsd-utils-qt5|2015-02-03|Renamed to pcbsd-utils-qt5 devel/ntopng-zmq||2015-02-05|Has expired: No longer required after net/ntopng 1.1 devel/py-pylib|devel/py-py|2015-02-11|Rename to match upstream (PyPI) name sysutils/brebis|sysutils/backupchecker|2015-02-12|Renamed to backupchecker sysutils/rsyslog7-devel|sysutils/rsyslog7|2015-02-13|Has expired: EoL, use sysutils/rsyslog7 sysutils/rsyslog8-devel|sysutils/rsyslog8|2015-02-13|Has expired: EoL, use sysutils/rsyslog8 japanese/mozc-additions||2015-02-15|Obsoleted by mozc script in japanese/mozc-server math/ruby-numru_units|math/rubygem-numru-units|2015-02-22|Long time broken. Please use math/rubygem-numru-units instead lang/ruby19|lang/ruby20|2015-02-24|Upstream support ended February 23, 2015 games/trigger|games/trigger-rally|2015-02-26|Follow upstream naming multimedia/xbmc|multimedia/kodi|2015-02-28|Project renamed finance/openerp-server||2015-03-01|Has expired: Broken for more than 6 months graphics/p5-Geo-KML||2015-03-01|Has expired mail/postfix-tls||2015-03-01|Has expired: TLS is now a default for postfix / postfix-current net/spserver||2015-03-01|Has expired: Broken for more than 6 months net/xrdesktop||2015-03-01|Has expired: Unmaintained upstream - please use net/xrdesktop2 instead www/mediawiki122||2015-03-01|Has expired: Deprecated by upstream, use www/mediawiki12{3,4} instead www/mod_cplusplus||2015-03-01|Has expired: written for apache 2.0, no longer maintained upstream www/py-django15||2015-03-01|Has expired: not supported by upstream math/isabelle||2015-03-01|Has expired: Broken for more than 6 months net/rubygem-openid|net/rubygem-ruby-openid|2015-03-07|Rename to match our rubygem- port naming devel/p5-Errno||2015-03-09|Errno is part of Perl devel/p5-Class-XSAccessor-Array||2015-03-09|Has been a part of devel/p5-Class-XSAccessor for >5 years. Use that port instead multimedia/ffmpeg25|multimedia/ffmpeg26|2015-03-14|ffmpeg upstream now points to 2.6.x series www/squid33|www/squid|2015-03-15|Has expired: Reached EOL on 28 August 2014, use www/squid (v3.4) instead x11-fonts/ttmkfdir|x11-fonts/mkfontdir|2015-03-22|Has been replaced by mkfontdir/mkfontscale long ago audio/raproxy||2015-03-28|Has expired: Broken for more than 6 months converters/ruby-iconv||2015-03-28|Has expired: Not needed with Ruby 2.x databases/pydbdesigner||2015-03-28|Has expired: Broken for more than 6 months security/cyassl|security/wolfssl|2015-03-28|Renamed upstream devel/rubygem-rcov||2015-03-28|Has expired: Does not work with Ruby 2.x emulators/linux_dist-gentoo-stage3||2015-03-28|Has expired: Broken for more than 6 months emulators/linux_base-gentoo-stage3||2015-03-28|Has expired: Broken for more than 6 months www/vimb|www/vimb-gtk3|2015-03-29|Split into www/vimb-gtk2 and www/vimb-gtk3 (former default) ports-mgmt/portbuilder||2015-03-31|Has expired: No longer developed and overcome by changed in the Ports Collection devel/subversion16|devel/subversion|2015-03-31|Has expired: EoL, use devel/subversion lang/nimrod|lang/nim|2015-04-03|Renamed by upstream deskutils/mirall|deskutils/owncloudclient|2015-04-04|Renamed upstream mail/rubygem-qmail|mail/rubygem-ruby-qmail|2015-04-05|Rename to match our rubygem- port naming devel/rubygem-transactionsimple|devel/rubygem-transaction-simple|2015-04-05|Rename to match our rubygem- port naming print/rubygem-pdfwriter|print/rubygem-pdf-writer|2015-04-05|Rename to match our rubygem- port naming devel/rubygem-filemagic|devel/rubygem-ruby-filemagic|2015-04-05|Rename to match our rubygem- port naming emulators/xl|sysutils/xen-tools|2015-04-06|Renamed into xen-tools lang/gnatdroid-armv5||2015-04-07|Has expired: Nobody cares enough to fix sigtramp-android.c for ARMv5 sysutils/puppet27||2015-04-07|Has expired: Does not work with Ruby 2.x www/rubygem-form_data|www/rubygem-http-form_data|2015-04-07|Has expired: Use www/rubygem-http-form_data instead (renamed by upstream) www/typo345||2015-04-07|Has expired: Upgrade to www/typo3 or www/typo3-lts multimedia/mediabrowser|multimedia/emby-server|2015-04-08|Project renamed deskutils/preferencepanes|deskutils/systempreferences|2015-04-08|preferencepanes merged into systempreferences games/airstrike||2015-04-10|Has expired: never completed, alpha quality, dev site and repo do not resolve www/trac-batchmodify||2015-04-10|Has expired: This functionality was merged into Trac since version 1.0 net/quagga23|net/quagga|2015-04-17|The regression on 8 and 9 has been patched, go back to the regular quagga databases/php53-sqlite3||2015-04-17|Has expired: security EOL reached 14 Aug 2014 textproc/php53-simplexml||2015-04-17|Has expired: security EOL reached 14 Aug 2014 databases/php53-sybase_ct||2015-04-17|Has expired: security EOL reached 14 Aug 2014 databases/php53-pdo_mysql||2015-04-17|Has expired: security EOL reached 14 Aug 2014 textproc/php53-ctype||2015-04-17|Has expired: security EOL reached 14 Aug 2014 textproc/php53-wddx||2015-04-17|Has expired: security EOL reached 14 Aug 2014 security/php53-filter||2015-04-17|Has expired: security EOL reached 14 Aug 2014 ftp/php53-ftp||2015-04-17|Has expired: security EOL reached 14 Aug 2014 net/php53-soap||2015-04-17|Has expired: security EOL reached 14 Aug 2014 converters/php53-recode||2015-04-17|Has expired: security EOL reached 14 Aug 2014 security/php53-openssl||2015-04-17|Has expired: security EOL reached 14 Aug 2014 databases/php53-dba||2015-04-17|Has expired: security EOL reached 14 Aug 2014 databases/php53-pdo_pgsql||2015-04-17|Has expired: security EOL reached 14 Aug 2014 sysutils/php53-fileinfo||2015-04-17|Has expired: security EOL reached 14 Aug 2014 databases/php53-pdo_odbc||2015-04-17|Has expired: security EOL reached 14 Aug 2014 databases/php53-sqlite||2015-04-17|Has expired: security EOL reached 14 Aug 2014 devel/php53-readline||2015-04-17|Has expired: security EOL reached 14 Aug 2014 mail/php53-imap||2015-04-17|Has expired: security EOL reached 14 Aug 2014 sysutils/php53-posix||2015-04-17|Has expired: security EOL reached 14 Aug 2014 archivers/php53-phar||2015-04-17|Has expired: security EOL reached 14 Aug 2014 graphics/php53-gd||2015-04-17|Has expired: security EOL reached 14 Aug 2014 textproc/php53-xsl||2015-04-17|Has expired: security EOL reached 14 Aug 2014 databases/php53-pdo_firebird||2015-04-17|Has expired: security EOL reached 14 Aug 2014 devel/mingw64-binutils||2015-04-17|Has expired: Obsolete. Migrate to devel/binutils based ports devel/cross-binutils||2015-04-17|Has expired: Obsolete. Migrate to devel/binutils based ports databases/php53-pdo_dblib||2015-04-17|Has expired: security EOL reached 14 Aug 2014 devel/php53-sysvshm||2015-04-17|Has expired: security EOL reached 14 Aug 2014 devel/php53-json||2015-04-17|Has expired: security EOL reached 14 Aug 2014 databases/php53-redis||2015-04-17|Has expired: requires php53, security EOL reached 14 Aug 2014 textproc/php53-pspell||2015-04-17|Has expired: security EOL reached 14 Aug 2014 databases/php53-pgsql||2015-04-17|Has expired: security EOL reached 14 Aug 2014 textproc/php53-xmlreader||2015-04-17|Has expired: security EOL reached 14 Aug 2014 converters/php53-iconv||2015-04-17|Has expired: security EOL reached 14 Aug 2014 databases/php53-odbc||2015-04-17|Has expired: security EOL reached 14 Aug 2014 ftp/php53-curl||2015-04-17|Has expired: security EOL reached 14 Aug 2014 math/php53-gmp||2015-04-17|Has expired: security EOL reached 14 Aug 2014 security/php53-mcrypt||2015-04-17|Has expired: security EOL reached 14 Aug 2014 devel/php53-shmop||2015-04-17|Has expired: security EOL reached 14 Aug 2014 math/php53-bcmath||2015-04-17|Has expired: security EOL reached 14 Aug 2014 security/php53-hash||2015-04-17|Has expired: security EOL reached 14 Aug 2014 devel/php53-sysvsem||2015-04-17|Has expired: security EOL reached 14 Aug 2014 archivers/php53-zip||2015-04-17|Has expired: security EOL reached 14 Aug 2014 graphics/php53-exif||2015-04-17|Has expired: security EOL reached 14 Aug 2014 devel/php53-gettext||2015-04-17|Has expired: security EOL reached 14 Aug 2014 databases/php53-mysql||2015-04-17|Has expired: security EOL reached 14 Aug 2014 textproc/php53-xmlwriter||2015-04-17|Has expired: security EOL reached 14 Aug 2014 textproc/php53-xml||2015-04-17|Has expired: security EOL reached 14 Aug 2014 converters/php53-mbstring||2015-04-17|Has expired: security EOL reached 14 Aug 2014 devel/php53-sysvmsg||2015-04-17|Has expired: security EOL reached 14 Aug 2014 databases/php53-mysqli||2015-04-17|Has expired: security EOL reached 14 Aug 2014 misc/php53-calendar||2015-04-17|Has expired: security EOL reached 14 Aug 2014 devel/php53-tokenizer||2015-04-17|Has expired: security EOL reached 14 Aug 2014 databases/php53-pdo||2015-04-17|Has expired: security EOL reached 14 Aug 2014 net/php53-xmlrpc||2015-04-17|Has expired: security EOL reached 14 Aug 2014 databases/php53-interbase||2015-04-17|Has expired: security EOL reached 14 Aug 2014 www/php53-session||2015-04-17|Has expired: security EOL reached 14 Aug 2014 databases/php53-mssql||2015-04-17|Has expired: security EOL reached 14 Aug 2014 www/php53-tidy||2015-04-17|Has expired: security EOL reached 14 Aug 2014 archivers/php53-zlib||2015-04-17|Has expired: security EOL reached 14 Aug 2014 net/php53-ldap||2015-04-17|Has expired: security EOL reached 14 Aug 2014 net-mgmt/php53-snmp||2015-04-17|Has expired: security EOL reached 14 Aug 2014 textproc/php53-dom||2015-04-17|Has expired: security EOL reached 14 Aug 2014 devel/php53-pcntl||2015-04-17|Has expired: security EOL reached 14 Aug 2014 archivers/php53-bz2||2015-04-17|Has expired: security EOL reached 14 Aug 2014 net/php53-sockets||2015-04-17|Has expired: security EOL reached 14 Aug 2014 lang/php53||2015-04-17|Has expired: security EOL reached 14 Aug 2014 lang/php53-extensions||2015-04-17|Has expired: security EOL reached 14 Aug 2014 german/pecl-konto_check||2015-04-17|Has expired: requires php53, security EOL reached 14 Aug 2014 www/moodle26|www/moodle27|2015-04-17|Has expired: Deprecated by upstream, use www/moodle2{7,8} instead databases/php53-pdo_sqlite||2015-04-17|Has expired: security EOL reached 14 Aug 2014 java/eclipse-ocl||2015-04-18|Has expired: depends on deprecated java/eclipse-emf java/eclipse-quantum||2015-04-18|Has expired: depends on deprecated java/eclipse-gef java/eclipse-propedit||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-aptana||2015-04-18|Has expired: evaluation recommendation is to remove rather than update devel/subclipse||2015-04-18|Has expired: evaluation recommendation is to remove rather than update devel/scala-ide||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-webtools||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-RDT||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-aptana-radrails||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-jad||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-vep-examples||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-gef-examples||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-gef||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-sysdeo-tomcat||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/commonclipse||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-sqlexplorer||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-viplugin||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-vep||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-checkstyle||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-aptana2||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-examples||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-hibernatetools||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-langpack||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-uml||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-datatools||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-emf||2015-04-18|Has expired: evaluation recommendation is to remove rather than update java/eclipse-pmd||2015-04-18|Has expired: evaluation recommendation is to remove rather than update textproc/nltk|textproc/py-nltk|2015-04-19|Renamed for consistency devel/rubygem-inline|devel/rubygem-rubyinline|2015-04-21|Rename to match our rubygem- port naming devel/p5-Devel-Profiler|devel/p5-Devel-NYTProf|2015-04-24|Devel::DProf was removed form Perl, use Devel::NYTProf audio/filter_audio|audio/libfilteraudio|2015-04-27|audio/filter-audio is renamed into audio/libfilteraudio www/p5-Google-Code-Upload||2015-04-30|Has expired: Google Code will be shutting down (http://google-opensource.blogspot.tw/2015/03/farewell-to-google-code.html) games/wmfortune||2015-04-30|Has expired: Broken for more than 6 months devel/p5-base||2015-04-30|Has expired: this port is outdated and base 2.18+ is already in all supported Perl releases security/py-certify|security/py-certifi|2015-05-01|security/py-certify is renamed into security/py-certifi devel/rubygem-mini_portile||2015-05-03|Has expired: Unneeded port devel/rubygem-mirror|devel/rubygem-rubygems-mirror|2015-05-03|Rename to match our rubygem- port naming graphics/rubygem-graphviz|graphics/rubygem-ruby-graphviz|2015-05-03|Rename to match our rubygem- port naming x11-fm/walcommander|x11-fm/wcmcommander|2015-05-07|Renamed upstream archivers/lz4|archivers/liblz4|2015-05-08|Superseded by archivers/liblz4 deskutils/libopensync-plugin-python||2015-05-09|Has expired: Unfetchable, devices are not produced anymore deskutils/msynctool||2015-05-09|Has expired: Unfetchable, devices are not produced anymore devel/ruby-flexmock|devel/rubygem-flexmock|2015-05-10|Rename to match our rubygem- port naming lang/pypy-devel|lang/pypy|2015-05-17|Superseded by lang/pypy databases/my2cego|databases/cegobridge|2015-05-19|Superseded by databases/cegobridge emulators/wine-compholio|emulators/wine-staging|2015-05-23|Renamed emulators/i386-wine-compholio|emulators/i386-wine-staging|2015-05-23|Renamed devel/rubygem-bioruby|devel/rubygem-bio|2015-05-23|Rename to match our rubygem- port naming www/rubygem-taggable|www/rubygem-acts_as_taggable|2015-05-23|Rename to match our rubygem- port naming security/rubygem-meterpreter_bins|security/rubygem-metasploit-payloads|2015-05-23|Renamed upstream textproc/rubygem-augeas|textproc/rubygem-ruby-augeas|2015-05-23|Rename to match our rubygem- port naming textproc/rubygem-xslt|textproc/rubygem-ruby-xslt|2015-05-24|Rename to match our rubygem- port naming net-mgmt/glpi-plugins-tracker-agent|net-mgmt/glpi-plugins-fusioninventory-server|2015-05-24|Has expired: superseded by net-mgmt/glpi-plugins-fusioninventory-server net-mgmt/glpi-plugins-tracker-server|net-mgmt/glpi-plugins-fusioninventory-server|2015-05-24|Has expired: superseded by net-mgmt/glpi-plugins-fusioninventory-server science/rubygem-netcdf|science/rubygem-ruby-netcdf|2015-05-24|Rename to match our rubygem- port naming security/rubygem-rc4|security/rubygem-ruby-rc4|2015-05-24|Rename to match our rubygem- port naming print/rubygem-colortools|print/rubygem-color-tools|2015-05-24|Rename to match our rubygem- port naming www/rubygem-layout-yullio|www/rubygem-layout_yullio_generator|2015-05-27|Rename to match our rubygem- port naming net/rubygem-rightaws|net/rubygem-right_aws|2015-05-27|Rename to match our rubygem- port naming net/rubygem-rightflexiscale|net/rubygem-right_flexiscale|2015-05-27|Rename to match our rubygem- port naming net/rubygem-rightgogrid|net/rubygem-right_gogrid|2015-05-27|Rename to match our rubygem- port naming net/rubygem-righthttpconnection|net/rubygem-right_http_connection|2015-05-27|Rename to match our rubygem- port naming net/rubygem-rightslicehost|net/rubygem-right_slicehost|2015-05-27|Rename to match our rubygem- port naming audio/rubygem-shout|audio/rubygem-ruby-shout|2015-05-27|Rename to match our rubygem- port naming devel/rubygem-test|devel/rubygem-rubygems-test|2015-05-29|Rename to match our rubygem- port naming devel/rubygem-deeptest|devel/rubygem-deep_test|2015-05-30|Rename to match our rubygem- port naming audio/portaudio2|audio/portaudio|2015-05-30|Merged into the main port net/rubygem-yadis|net/rubygem-ruby-yadis|2015-05-30|Rename to match our rubygem- port naming ports-mgmt/porteasy||2015-06-01|Has expired: Does not support pkgng textproc/hgrep||2015-06-01|Has expired: Not needed any more, base grep has coloring support www/diamanda||2015-06-01|Has expired: Broken for more than 6 months devel/py-ScriptTest|devel/py-scripttest|2015-06-01|Renamed upstream net/openmpi-devel||2015-06-09|Port older than net/openmpi databases/postgresql84-client||2015-06-10|Has expired: "EOL was reached in July 2014" databases/postgresql84-contrib||2015-06-10|Has expired: "EOL was reached in July 2014" databases/postgresql84-docs||2015-06-10|Has expired: "EOL was reached in July 2014" databases/postgresql84-plperl||2015-06-10|Has expired: "EOL was reached in July 2014" databases/postgresql84-plpython||2015-06-10|Has expired: "EOL was reached in July 2014" databases/postgresql84-pltcl||2015-06-10|Has expired: "EOL was reached in July 2014" deskutils/deskbar-applet||2015-06-10|Has expired: Broken since update to gnome3 deskutils/gimmie||2015-06-10|Has expired: Broken since update to gnome3 deskutils/glipper||2015-06-10|Has expired: Broken since update to gnome3 deskutils/gnochm||2015-06-10|Has expired: Broken since update to gnome3 deskutils/hamster-applet||2015-06-10|Has expired: Broken since update to gnome3 deskutils/kupfer||2015-06-10|Has expired: Broken since update to gnome3 deskutils/ontv||2015-06-10|Has expired: Broken since update to gnome3 deskutils/timer-applet||2015-06-10|Has expired: Broken since update to gnome3 editors/scribes||2015-06-10|Has expired: Broken since update to gnome3 games/gweled||2015-06-10|Has expired: Broken since update to gnome3 games/py-pychess||2015-06-10|Has expired: Broken since update to gnome3 graphics/gqview||2015-06-10|Has expired: Unmaintained upstream, preferences dialog broken, use graphics/geeqie fork lang/gcc47-aux||2015-06-10|Has expired: GCC 4.7 branch closed June 2014, move to lang/gcc-aux multimedia/arista||2015-06-10|Has expired: Broken since update to gnome3 net/service-discovery-applet||2015-06-10|Has expired: Broken since update to gnome3 net/shaperprobe||2015-06-10|Has expired: broken with no known fix (PR 197327) print/gnome-specimen||2015-06-10|Has expired: Broken since update to gnome3 x11-themes/gtk-aqualightblue-theme||2015-06-10|Has expired: Upstream disappeared x11-themes/gtk-flat-theme2||2015-06-10|Has expired: Upstream disappeared databases/postgresql84-server||2015-06-10|Has expired: "EOL was reached in July 2014" ftp/ncftp1||2015-06-12|Unfetchable multimedia/avidemux2||2015-06-13|Branch no longer maintained upstream, use multimedia/avidemux26 multimedia/avidemux2-plugins||2015-06-13|Branch no longer maintained upstream, use multimedia/avidemux26 multimedia/avidemux26|multimedia/avidemux|2015-06-13|Renamed multimedia/avidemux26-cli|multimedia/avidemux-cli|2015-06-13|Renamed multimedia/avidemux26-plugins|multimedia/avidemux-plugins|2015-06-13|Renamed multimedia/avidemux26-qt4|multimedia/avidemux-qt4|2015-06-13|Renamed editors/zim|deskutils/zim|2015-06-18|Move to more appropriate category net/py-ldap2|net/py-ldap|2015-06-18|Rename to better match upstream name devel/erlang-mustache|devel/erlang-bbmustache|2015-06-21|Renamed upstream dns/maradns1|dns/maradns|2015-06-23|Has expired: MaraDNS 1 end-of-life: June 21, 2015, use dns/maradns net/py-soappy-devel||2015-06-25|Please use net/py-soappy instead. It's fresher than -devel devel/armv6-freebsd10.0-xdev||2015-06-27|Not usable for the purpose it has been intended for devel/common_lib|devel/erlang-common_lib|2015-06-27|Renamed with erlang- prefix devel/cowlib|devel/erlang-cowlib|2015-06-27|Renamed with erlang- prefix devel/cuttlefish|devel/erlang-cuttlefish|2015-06-27|Renamed with erlang- prefix devel/esdl|devel/erlang-esdl|2015-06-27|Renamed with erlang- prefix devel/folsom|devel/erlang-folsom|2015-06-27|Renamed with erlang- prefix devel/goldrush|devel/erlang-goldrush|2015-06-27|Renamed with erlang- prefix devel/lager_syslog|devel/erlang-lager_syslog|2015-06-27|Renamed with erlang- prefix devel/lager|devel/erlang-lager|2015-06-27|Renamed with erlang- prefix devel/meck|devel/erlang-meck|2015-06-27|Renamed with erlang- prefix devel/neotoma|devel/erlang-neotoma|2015-06-27|Renamed with erlang- prefix devel/oserl|devel/erlang-oserl|2015-06-27|Renamed with erlang- prefix devel/poolboy|devel/erlang-poolboy|2015-06-27|Renamed with erlang- prefix net/erlang_xmlrpc|net/erlang-xmlrpc|2015-06-27|Renamed with erlang- prefix net/ranch|net/erlang-ranch|2015-06-27|Renamed with erlang- prefix www/cowboy|www/erlang-cowboy|2015-06-27|Renamed with erlang- prefix www/mochiweb-basho|www/erlang-mochiweb-basho|2015-06-27|Renamed with erlang- prefix www/mochiweb|www/erlang-mochiweb|2015-06-27|Renamed with erlang- prefix www/webmachine|www/erlang-webmachine|2015-06-27|Renamed with erlang- prefix textproc/exmpp|devel/erlang-exmpp|2015-06-27|Moved to devel category, with erlang- prefix databases/eredis|databases/erlang-eredis|2015-06-27|Renamed with erlang- prefix databases/epgsql|databases/erlang-epgsql|2015-06-27|Renamed with erlang- prefix www/varnish|www/varnish4|2015-06-28|Has expired: EOL was reached in April 2015, use www/varnish4 audio/padevchooser||2015-06-29|Has expired: Broken for more than 6 months devel/xtla||2015-06-29|Has expired: Broken for more than 6 months mail/mail-notification||2015-06-29|Has expired: Broken for more than 6 months ports-mgmt/gnome-packagekit||2015-06-29|Has expired: Broken for more than 6 months sysutils/py-salt-api||2015-06-29|Has expired: Broken for more than 6 months devel/rubygem-mash|devel/rubygem-hashie|2015-06-30|Has expired: Deprecated by upstream. Use devel/rubygem-hashie instead net/rubygem-bunny060|net/rubygem-bunny|2015-06-30|Has expired: Use net/rubygem-bunny instead security/rubygem-hmac|security/rubygem-ruby-hmac|2015-06-30|Has expired: Duplicate of security/rubygem-ruby-hmac www/ruby-amazon|www/ruby-aws|2015-06-30|Has expired: Rendered obsolete by upstream since Amazon shut down access to AWS API v3 (2008-03-31). Use www/ruby-aws instead net/ptpd2-devel|net/ptpd2|2015-07-02|Development version no longer necessary devel/erlang-cowlib|www/erlang-cowlib|2015-07-03|Move to www where it belongs net/py-google||2015-07-03|Google no longer supports the SOAP API for search devel/erlang-ibrowse|www/erlang-ibrowse|2015-07-05|Move to www where it belongs multimedia/ffmpeg23|multimedia/ffmpeg|2015-07-05|Obsolete since recent upstream upgrade of main ffmpeg port. Use multimedia/ffmpeg instead multimedia/ffmpeg26|multimedia/ffmpeg|2015-07-05|Obsolete since recent upstream upgrade of main ffmpeg port. Use multimedia/ffmpeg instead x11/docker|x11/docker-tray|2015-07-06|Renamed graphics/fli2gif||2015-07-07|Has expired: No public distfiles net-im/tkabbur||2015-07-07|Has expired: Upstream development ceased since 2008 www/mod_wsgi3|www/mod_wsgi4|2015-07-12|Renamed to reflect new version archivers/pear-PHP_Archiv|archivers/pear-PHP_Archive|2015-07-12|Fix path devel/p5-Test-TempDir|devel/p5-Test-TempDir-Tiny|2015-07-14|Has expired: Use devel/p5-Test-TempDir-Tiny instead x11-toolkits/fpc-gtk1||2015-07-14|Development has been discontinued graphics/fpc-fpgtk||2015-07-14|Development has been discontinued editors/lazarus-lcl-gtk||2015-07-14|Development has been discontinued x11/gmessage||2015-07-14|Upstream has disappeared and development ceased security/ssh-gui||2015-07-14|Development ceased, broken with modern ssh textproc/gdict||2015-07-14|Development ceased, unusable print/pup||2015-07-14|Development ceased, unusable audio/rubyripper||2015-07-16|Has expired: Does not build and is deprecated upstream ports-mgmt/vulnerability-test-port||2015-07-19|Useless after portaudit retirement print/texlive-infra|print/texlive-tlmgr|2015-07-20|Renamed print/cm-super||2015-07-20|Obsolete devel/rubygem-builder31||2015-07-20|Has expired: not used by other ports anymore devel/rubygem-timers1||2015-07-20|Has expired: not used by other ports anymore net/rubygem-rubyntlm01||2015-07-20|Has expired: not used by other ports anymore security/rubygem-net-scp11||2015-07-20|Has expired: not used by other ports anymore security/rubygem-net-ssh27||2015-07-20|Has expired: not used by other ports anymore graphics/kuickshow-kde4||2015-07-21|Has expired: Broken for more than 6 months graphics/sng||2015-07-21|Has expired: Broken for more than 6 months japanese/netype||2015-07-21|Has expired: Broken for more than 6 months databases/p5-DBD-Pg32|databases/p5-DBD-Pg|2015-07-22|Has expired: Use databases/p5-DBD-Pg instead, compatibility probles are fixed devel/libiomp5-devel|devel/llvm-devel|2015-07-24|Merged with devel/llvm-devel devel/p5-Test-Tester|devel/p5-Test-Simple|2015-07-25|Has expired: Part of p5-Test-Simple (use that instead), and included in perl 5.22 devel/p5-Test-use-ok|devel/p5-Test-Simple|2015-07-25|Has expired: Part of devel/p5-Test-Simple (use that instead), and included in perl 5.22 sysutils/libzeitgeist|sysutils/zeitgeist|2015-07-26|Merged into zeitgeist x11/mate-dialogs||2015-07-27|Not part of MATE 1.10 devel/automake14||2015-07-27|Has expired: Not used in the ports tree anymore sysutils/slurm-hpc|sysutils/slurm-wlm|2015-07-28|Upstream is standardizing on the name "slurm-wlm" textproc/kibana|textproc/kibana3|2015-07-29|Moved to leave place for a kibana-4 port lang/clang-cheri|devel/llvm-cheri|2015-07-30|Moved to devel/llvm-cheri to match other LLVM ports japanese/p5-Acme-Lou||2015-08-01|Has expired: Needs ja-p5-Text-MeCab that does not work with 5.18 or above mail/maildirsync||2015-08-01|Has expired: Requires an unsupported version of Perl mail/qar-bufo||2015-08-01|Has expired: Requires an unsupported version of Perl net/py-soapy|net/py-soappy|2015-08-01|Has expired: Abandonware depending on ancient py-xml. Please use net/py-soappy instead net-p2p/btqueue||2015-08-01|Has expired: Runtime broken (does not download anything) sysutils/vhdtool||2015-08-01|Has expired: Use mkimg(1) instead www/rubygem-modernizr||2015-08-01|Has expired: This gem has been removed from rubygems.org by upstream devel/java-util-concurrent||2015-08-03|Has expired: Included in all current JDKs by default devel/py-pyparsing15||2015-08-03|Has expired: Not used in the ports tree anymore finance/tryton||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_account||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_account_be||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_account_invoice||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_account_invoice_history||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_account_invoice_line_standalone||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_account_product||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_account_statement||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_account_stock_anglo_saxon||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_account_stock_continental||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_analytic_account||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_analytic_invoice||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_analytic_purchase||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_analytic_sale||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_calendar||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_calendar_classification||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_calendar_scheduling||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_calendar_todo||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_carrier||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_carrier_percentage||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_carrier_weight||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_company||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_company_work_time||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_country||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_currency||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_dashboard||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_ldap_authentication||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_ldap_connection||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_party||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_party_siret||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_party_vcarddav||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_product||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_product_cost_fifo||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_product_cost_history||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_product_measurements||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_product_price_list||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_production||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_project||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_project_plan||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_project_revenue||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_purchase||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_purchase_invoice_line_standalone||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_purchase_shipment_cost||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_sale||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_sale_opportunity||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_sale_price_list||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_sale_shipment_cost||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_stock||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_stock_forecast||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_stock_inventory_location||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_stock_location_sequence||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_stock_lot||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_stock_product_location||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_stock_split||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_stock_supply||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_stock_supply_day||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_stock_supply_forecast||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_stock_supply_production||2015-08-05|No more supported upstream, use tryton 2.8 instead finance/trytond_timesheet||2015-08-05|No more supported upstream, use tryton 2.8 instead textproc/py-stripogram||2015-08-05|Discontinued, author discourages to use it french/trytond_account_fr||2015-08-05|No more supported upstream, use tryton 2.8 instead german/trytond_account_de_skr03||2015-08-05|No more supported upstream, use tryton 2.8 instead www/trytond_google_maps||2015-08-05|No more supported upstream, use tryton 2.8 instead devel/appdata-tools|devel/appstream-glib|2015-08-05|Replaced by appstream-glib textproc/pystemmer|textproc/py-pystemmer|2015-08-06|Rename to match upstream (PyPI) name dns/knot|dns/knot1|2015-08-07|Rename to knot1 now knot 2.0 is out net/py-xmlrpclib||2015-08-07|Has expired: This is part of standard library since python 2.2 net-p2p/py-kenosis||2015-08-07|Has expired: Fails to run with modern python graphics/skencil||2015-08-08|Has expired: Project is abandoned and was overtaken by sK1 fork www/ismail||2015-08-08|Has expired: Development has been discontinued for many years sysutils/rubygem-bundler17||2015-08-13|Has expired: not used by other ports anymore sysutils/fpkg||2015-08-15|Has expired: Does not support pkg(8) games/galaxymage||2015-08-16|Has expired: Runtime broken and abandoned upstream devel/rubygem-fog-brightbox|net/rubygem-fog-brightbox|2015-08-19|Move to a better place www/ompload||2015-08-20|Has expired: omploader.org is down for many years devel/ocaml-equeue|www/ocaml-net|2015-08-20|Has expired: Superseded by www/ocaml-net devel/hs-MaybeT||2015-08-20|Removed: Deprecated devel/hs-geniplate||2015-08-20|Removed: Upstream support is discontinued devel/hs-glade||2015-08-20|Removed: Upstream support is discontinued devel/hs-haskell-platform||2015-08-20|Removed: It is not tracked any more devel/hs-ranges||2015-08-20|Removed: Deprecated devel/hs-testpack||2015-08-20|Removed: Upstream is unmaintained graphics/hs-soegtk||2015-08-20|Removed: Upstream support is discontinued lang/hs-epic||2015-08-20|Removed: It is not needed any more math/hs-nats||2015-08-20|Removed: It has been merged into the base library of GHC multimedia/hs-gstreamer||2015-08-20|Removed: Upstream support is discontinued www/hs-scgi||2015-08-20|Removed: Deprecated www/hs-yesod-platform||2015-08-20|Removed: Upstream support is discontinued www/hs-yesod-routes||2015-08-20|Removed: Upstream support is discontinued x11-toolkits/hs-gtkglext||2015-08-20|Removed: Upstream support is discontinued textproc/prosper||2015-08-22|Removed: maintainted in print/texlive-texmf print/ghostscript7|print/ghostscript7-base|2015-08-22|Split into print/ghostscript7-base and print/ghostscript7-x11 print/ghostscript7-nox11|print/ghostscript7-base|2015-08-22|Integrated into print/ghostscript7-base print/ghostscript8|print/ghostscript8-base|2015-08-22|Split into print/ghostscript8-base and print/ghostscript8-x11 print/ghostscript8-nox11|print/ghostscript8-base|2015-08-22|Integrated into print/ghostscript8-base print/ghostscript9|print/ghostscript9-base|2015-08-22|Split into print/ghostscript9-base and print/ghostscript9-x11 print/ghostscript9-nox11|print/ghostscript9-base|2015-08-22|Integrated into print/ghostscript9-base print/ghostscript9-agpl|print/ghostscript9-agpl-base|2015-08-22|Split into print/ghostscript9-agpl-base and print/ghostscript9-agpl-x11 print/ghostscript9-agpl-nox11|print/ghostscript9-agpl-base|2015-08-22|Integrated into print/ghostscript9-agpl-base www/pelican|www/py-pelican|2015-08-29|Rename to match Python naming conventions devel/ninja16|devel/ninja|2015-08-29|Use devel/ninja instead devel/geany-plugin-gproject|devel/geany-plugin-projectorganizer|2015-08-31|Renamed to match upstream naming www/p5-WWW-Shorten-NotLong||2015-09-01|Has expired: notlong.com is now dead games/linux-majesty-demo||2015-09-01|Has expired: Broken for more than 6 months games/linux-coldwar-demo||2015-09-01|Has expired: Broken for more than 6 months games/linux-hdb-demo||2015-09-01|Has expired: Broken for more than 6 months devel/rubygem-igraph||2015-09-01|Has expired: Broken for more than 6 months games/linux-candycruncher-demo||2015-09-01|Has expired: Broken for more than 6 months games/linux-gorky17-demo||2015-09-01|Has expired: Broken for more than 6 months sysutils/syslog-ng33||2015-09-01|Has expired: No longer supported by Balabit cince November 2014 textproc/ruby-xmlconfigfile|textproc/ruby-xml-configfile|2015-09-03|Rename to match our ruby naming net/mcast-tools|net/pim6-tools|2015-09-07|Rename www/p5-Dancer-Session-Memcached|databases/p5-Dancer-Session-Memcached|2015-09-09|Duplicate port devel/cloudabi-cloudlibc||2015-09-12|Moved to the CloudABI Ports Collection devel/cloudabi-compiler-rt||2015-09-12|Moved to the CloudABI Ports Collection devel/cloudabi-libc++||2015-09-12|Moved to the CloudABI Ports Collection devel/cloudabi-libc++abi||2015-09-12|Moved to the CloudABI Ports Collection devel/cloudabi-libunwind||2015-09-12|Moved to the CloudABI Ports Collection japanese/marumoji-fonts|japanese/font-marumoji|2015-09-13|Renamed www/asp-php||2015-09-13|Unmaintained upstream, generate unsupported php textproc/py-xmltools||2015-09-15|Remove port marked broken for six months: fetch failed security/krb5-111|security/krb5-112|2015-09-15|krb5-1.11 EOLed by MIT in December 2014 textproc/py-xml||2015-09-16|Remove: this package is available in standard python library since 2.2 x11-toolkits/wxgtk28-unicode|x11-toolkits/wxgtk28|2015-09-16|Make wxGTK now only unicode x11-toolkits/wxgtk28-unicode-contrib|x11-toolkits/wxgtk28-contrib|2015-09-16|Make wxGTK now only unicode x11-toolkits/py-wxPython28-unicode|x11-toolkits/py-wxPython28|2015-09-16|Make wxGTK now only unicode japanese/font-mplus|japanese/font-mplus-outline|2015-09-21|Renamed www/iojs|www/node|2015-09-23|io.js has been merged back to Node.js japanese/k10|japanese/font-naga10|2015-09-25|Renamed japanese/k12|japanese/font-kaname12|2015-09-25|Renamed japanese/elisa8x8|japanese/font-elisa8|2015-09-25|Renamed japanese/kanji18|japanese/font-kanji18|2015-09-25|Renamed japanese/kanji26|japanese/font-kanji26|2015-09-25|Renamed japanese/kappa20|japanese/font-kappa20|2015-09-25|Renamed japanese/mikachan-ttfonts|japanese/font-mikachan|2015-09-25|Renamed japanese/monafonts-ttf|japanese/font-mona-ttf|2015-09-25|Renamed japanese/monafonts|japanese/font-mona|2015-09-25|Renamed chinese/joe|editors/joe|2015-09-26|Regular joe's editor now supports Chinese net/linc||2015-09-27|Has expired: Last release in 2003, not used by anything anymore net/linc-reference||2015-09-27|Has expired: Last release in 2003, not used by anything anymore x11/xlogout||2015-09-27|Has expired: Useless cruft from 1989 net/rubygem-amq-client||2015-10-01|Has expired: Deprecated by Upstream. It is part of net/rubygem-amqp codebase now ports-mgmt/bpm||2015-10-10|No support for pkg www/moodle27||2015-10-11|Has expired: Please upgrade to moodle28 or moodle29 graphics/epeg|devel/efl|2015-10-11|Has expired: Merged into devel/efl x11-drivers/xf86-video-ati-ums||2015-10-13|Not supported by xorg-server 1.17 x11/nvidia-driver-173||2015-10-13|Does not support xorg-server 1.15 and higher net-mgmt/bsnmptools||2015-10-16|Has expired: client tools (including SNMPv3 support) are part of the base system security/yubikey-personalization|security/ykpers|2015-10-18|Port duplicate with security/ykpers devel/rubygem-listen2||2015-10-20|Has expired: not used by other ports anymore devel/cloudabi-binutils|devel/cloudabi-binutils-x86_64|2015-10-21|CloudABI now supports aarch64 as well net/ntp-rc|net/ntp|2015-10-21|ntp-4.2.8p4 has gone GA x11-wm/clementine|x11-wm/clementine-wm|2015-10-23|add suffix so the port is not mixed up with audio/clementine-player www/twig||2015-10-25|Has expired: Upstream vanished, php3 and php4 are long unsupported misc/ruby-progressbar|devel/rubygem-ruby-progressbar|2015-10-25|Has expired: Abandoned upstream, superseded by devel/rubygem-ruby-progressbar databases/py-mssql|databases/py-pymssql|2015-10-28|Broken with current FreeTDS net/py-medusa||2015-10-28|Abandoned upstream, last release was in 2005 audio/py-audiotools|audio/py-fmoo-audiotools|2015-10-29|Rename to match PyPI nomenclature audio/cmus-post.fm||2015-10-31|Has expired: Broken for more than 6 months devel/libphish||2015-10-31|Has expired: Broken for more than 6 months devel/rubygem-debugger||2015-10-31|Has expired: This port is for Ruby 1.9 only, upstream stopped maintenance games/linux-ningpo-demo||2015-10-31|Has expired: Broken for more than 6 months graphics/gdal-grass||2015-10-31|Has expired: Superseded by gdal-2.0.0 graphics/picviz||2015-10-31|Has expired: Broken for more than 6 months irc/weechat-devel|irc/weechat|2015-10-31|Has expired: far behind stable irc/weechat (use it instead) mail/cucipop||2015-10-31|Has expired: Broken for more than 6 months multimedia/streamanalyze||2015-10-31|Has expired: Broken for more than 6 months net-mgmt/collectd|net-mgmt/collectd5|2015-10-31|Has expired: Please move to collectd5 - collect4 is not developed/patched sysutils/sdd||2015-10-31|Has expired: Broken for more than 6 months sysutils/xfce4-minicmd-plugin||2015-10-31|Has expired: Broken for more than 6 months www/linux-libgtkembedmoz||2015-10-31|Has expired: Broken for more than 6 months www/py-feedfinder||2015-10-31|Has expired: Broken for more than 6 months www/py-openssl-proxy||2015-10-31|Has expired: Broken for more than 6 months www/py-webware||2015-10-31|Has expired: Broken for more than 6 months www/py-webware-component||2015-10-31|Has expired: Depends on deprecated www/py-webware x11-fonts/code2001||2015-10-31|Has expired: Broken for more than 6 months x11-wm/e-module-diskio||2015-10-31|Has expired: Broken for more than 7 months devel/ros||2015-11-01|Has expired: Unsupported upstream, see http://wiki.ros.org/Distributions ports-mgmt/portsopt||2015-11-01|Has expired: Deprecated by optionsng devel/pyvisa|devel/py-pyvisa|2015-11-02|Renamed to comply with Python ports policy devel/pyvisa-py|devel/py-pyvisa-py|2015-11-02|Renamed to comply with Python ports policy science/pyteomics.biolccc|science/py-pyteomics.biolccc|2015-11-02|Renamed to comply with Python ports policy science/pyteomics|science/py-pyteomics|2015-11-02|Renamed to comply with Python ports policy graphics/cal3d-devel|graphics/cal3d|2015-11-02|Development ceased in 2006 so set last devel version as stable www/joomla31|www/joomla3|2015-11-03|Renamed to match upstream only supporting the latest 3.x release at a time devel/py-parsing|devel/py-pyparsing|2015-11-04|Renamed to match upstream naming devel/py-pygitup|devel/py-git-up|2015-11-07|Renamed to match upstream naming devel/phptags||2015-11-08|Has expired: abandoned upstream sysutils/torsmo|sysutils/conky|2015-11-08|Has expired: no new releases for years, consider using sysutils/conky databases/mysql-workbench51|databases/mysql-workbench52|2015-11-10|Has expired: EOL upstream, use databases/mysql-workbench52 instead databases/mysql51-client||2015-11-10|Has expired: EOL upstream, use mysql55 or mysql56 instead databases/mysql51-scripts||2015-11-10|Has expired: EOL upstream, use mysql55 or mysql56 instead databases/mysql51-server||2015-11-10|Has expired: EOL upstream, use mysql55 or mysql56 instead databases/p5-DBD-mysql51|databases/p5-DBD-mysql|2015-11-10|Has expired: EOL upstream, use databases/p5-DBD-mysql instead databases/py-MySQLdb51||2015-11-10|Has expired: EOL upstream, use databases/py-MySQLdb instead deskutils/steadyflow||2015-11-13|Has expired: No new releases for years, consider using net/uget net/py-smb|net/py-pysmb|2015-11-14|Renamed to match upstream naming devel/py-asn1-modules|devel/py-pyasn1-modules|2015-11-14|Renamed to match upstream naming devel/py-experimental.cssselect||2015-11-15|The only consumer of this port switched to www/py-cssselect databases/mariadb-client||2015-11-18|Vulnerable, no updates expected, use mariadb55 or mariadb100 instead databases/mariadb-server||2015-11-18|Vulnerable, no updates expected, use mariadb55 or mariadb100 instead databases/mariadb-scripts||2015-11-18|Vulnerable, no updates expected, use mariadb55 or mariadb100 instead devel/py-asn1|devel/py-pyasn1|2015-11-18|Renamed to match upstream naming devel/py-pytz3|devel/py3-pytz|2015-11-19|Port Renamed devel/ocaml-typeconv|devel/ocaml-type_conv|2015-11-20|Renamed to match upstream naming www/py3-aiohttp|www/py-aiohttp|2015-11-21|Duplicate port textproc/kibana4|textproc/kibana41|2015-11-22|Distinguish from incompatible kibana42 devel/qsvn||2015-11-23|Has expired: Development discontinued since 2009 audio/pecl-id3||2015-11-28|Has expired: Broken for more than 6 months dns/geta||2015-11-28|Has expired: Broken for more than 6 months finance/openerp-web||2015-11-28|Has expired: Broken for more than 6 months devel/py-async||2015-11-28|Has expired: Further using of this module is not encouraged by upstream chinese/kon2||2015-11-28|Has expired: Depends on expiring chinese/cce games/linux-skulltag||2015-11-28|Has expired: Depends on expiring audio/linux-fmodapi archivers/wzip||2015-11-28|Has expired: Broken for more than 6 months databases/sybtcl||2015-11-28|Has expired: Broken for more than 6 months biology/povchem||2015-11-28|Has expired: Broken for more than 6 months audio/btc||2015-11-28|Has expired: Broken for more than 6 months astro/wmglobe||2015-11-28|Has expired: Broken for more than 6 months graphics/pyro||2015-11-28|Has expired: Broken for more than 6 months graphics/jpeg2ps||2015-11-28|Has expired: Broken for more than 6 months chinese/gugod-clean||2015-11-28|Has expired: Broken for more than 6 months comms/bforce||2015-11-28|Has expired: Broken for more than 6 months cad/geda-docs||2015-11-28|Has expired: Broken for more than 6 months chinese/cwtexttf||2015-11-28|Has expired: Broken for more than 6 months comms/zmtx-zmrx||2015-11-28|Has expired: Broken for more than 6 months astro/sky2000||2015-11-28|Has expired: Broken for more than 6 months deskutils/libopensync-plugin-file||2015-11-28|Has expired: Broken for more than 6 months databases/sqlite-ext-mobigroup||2015-11-28|Has expired: Broken for more than 6 months chinese/bg5ps||2015-11-28|Has expired: Broken for more than 6 months deskutils/x-tile||2015-11-28|Has expired: Broken for more than 6 months graphics/pure-gl||2015-11-28|Has expired: Broken for more than 6 months audio/dvda-author||2015-11-28|Has expired: Broken for more than 6 months chinese/oxim||2015-11-28|Has expired: Broken for more than 6 months editors/spe||2015-11-28|Has expired: Broken for more than 6 months cad/geda-symcheck||2015-11-28|Has expired: Broken for more than 6 months audio/linux-fmodapi||2015-11-28|Has expired: Broken for more than 6 months audio/pure-audio||2015-11-28|Has expired: Broken for more than 6 months benchmarks/geekbench||2015-11-28|Has expired: Broken for more than 6 months graphics/icoconvert||2015-11-28|Has expired: Broken for more than 6 months cad/geda-utils||2015-11-28|Has expired: Broken for more than 6 months deskutils/tomboy-plugin-wordcount||2015-11-28|Has expired: Broken for more than 6 months graphics/sketch||2015-11-28|Has expired: Broken for more than 6 months graphics/clutter-box2d||2015-11-28|Has expired: Broken for more than 6 months audio/scmpc||2015-11-28|Has expired: Broken for more than 6 months ftp/gnusget||2015-11-28|Has expired: Broken for more than 6 months comms/gpsk31||2015-11-28|Has expired: Broken for more than 6 months cad/geda-gschem||2015-11-28|Has expired: Broken for more than 6 months audio/ampache||2015-11-28|Has expired: Broken for more than 6 months cad/slffea||2015-11-28|Has expired: Broken for more than 6 months audio/cripple||2015-11-28|Has expired: Broken for more than 6 months cad/geda-gattrib||2015-11-28|Has expired: Broken for more than 6 months cad/findhier||2015-11-28|Has expired: Broken for more than 6 months x11/avant-window-navigator||2015-11-28|Has expired: Broken for more than 6 months cad/geda-netlist||2015-11-28|Has expired: Broken for more than 6 months deskutils/libopensync-plugin-sunbird||2015-11-28|Has expired: Broken for more than 6 months biology/ortep3||2015-11-28|Has expired: Broken for more than 6 months astro/aa||2015-11-28|Has expired: Broken for more than 6 months french/belote||2015-11-28|Has expired: Broken for more than 6 months converters/p5-String-SetUTF8||2015-11-28|Has expired: Broken for more than 6 months cad/geda-examples||2015-11-28|Has expired: Broken for more than 6 months editors/yasnippet||2015-11-28|Has expired: Broken for more than 6 months audio/musica||2015-11-28|Has expired: Broken for more than 6 months graphics/rubyphoto||2015-11-28|Has expired: Broken for more than 6 months german/bsdpaste||2015-11-28|Has expired: Broken for more than 6 months audio/amrcoder||2015-11-28|Has expired: Broken for more than 6 months sysutils/bashburn||2015-11-28|Has expired: Broken for more than 6 months editors/e93||2015-11-28|Has expired: Broken for more than 6 months audio/tepsonic||2015-11-28|Has expired: Broken for more than 6 months astro/ephem||2015-11-28|Has expired: Broken for more than 6 months chinese/cce||2015-11-28|Has expired: Broken for more than 6 months graphics/qcread||2015-11-28|Has expired: Broken for more than 6 months databases/py-sqlkit||2015-11-28|Has expired: Broken for more than 6 months databases/usogres||2015-11-28|Has expired: Broken for more than 6 months cad/libgeda||2015-11-28|Has expired: Broken for more than 6 months chinese/p5-Lingua-ZH-BPMFConvert||2015-11-28|Has expired: Broken for more than 6 months french/alphabet_sounds_fr||2015-11-28|Has expired: Broken for more than 6 months deskutils/mrundlg||2015-11-28|Has expired: Broken for more than 6 months databases/erlang-mysql||2015-11-28|Has expired: Broken for more than 6 months graphics/linux-XnViewMP||2015-11-28|Has expired: Broken for more than 6 months deskutils/akamaru||2015-11-28|Has expired: Broken for more than 6 months dns/p5-Net-DNS-ZoneCheck||2015-11-28|Has expired: Broken for more than 6 months astro/dgpsip||2015-11-28|Has expired: Broken for more than 6 months databases/pecl-handlersocket||2015-11-28|Has expired: Broken for more than 6 months audio/cymbaline||2015-11-28|Has expired: Broken for more than 6 months french/dico||2015-11-28|Has expired: Broken for more than 6 months audio/sonice||2015-11-28|Has expired: Broken for more than 6 months cad/geda-symbols||2015-11-28|Has expired: Broken for more than 6 months databases/java-mybatis||2015-11-28|Has expired: Broken for more than 6 months databases/openbase-jdbc||2015-11-28|Has expired: Broken for more than 6 months www/mediawiki119|www/mediawiki125|2015-11-28|Has expired: Please upgrade to mediawiki-1.25 www/R-cran-Rpad||2015-11-28|Has expired: Unmaintained upstream archivers/py-liblzma|archivers/py-pyliblzma|2015-11-30|Rename to match upstream (PyPI) naming archivers/fpc-paszlib||2015-12-05|Eliminated during FPC upgrade to 3.0.0 audio/fpc-sndfile||2015-12-05|Eliminated during FPC upgrade to 3.0.0 devel/fpc-fcl-process||2015-12-05|Eliminated during FPC upgrade to 3.0.0 devel/fpc-fpmkunit||2015-12-05|Eliminated during FPC upgrade to 3.0.0 multimedia/fpc-matroska||2015-12-05|Eliminated during FPC upgrade to 3.0.0 security/fpc-hash||2015-12-05|Eliminated during FPC upgrade to 3.0.0 www/jetty|www/jetty8|2015-12-06|Rename to prepare for jetty9 devel/pyinstaller|devel/py-pyinstaller|2015-12-09|Add py- prefix to directory name math/why3-gpl|math/why3-spark|2015-12-10|Change why3 suffix (upstream request and for consistency) devel/py-memoryprofiler|devel/py-memory_profiler|2015-12-11|Rename to consistency with other Python ports print/py-cups|print/py-pycups|2015-12-11|Renamed to match upstream naming devel/jep|devel/py-jep|2015-12-11|Renamed to match upstream naming ftp/py-curl|ftp/py-pycurl|2015-12-13|Renamed to match upstream naming www/py-django-pipeline12||2015-12-15|Has expired: Django 1.4 extended support ended on 2015-10-01 www/py-django14||2015-12-15|Has expired: Django 1.4 extended support ended on 2015-10-01 net/py-pysphere|net/py-pyvmomi|2015-12-15|Has expired: No longer maintained, please use net/py-pyvmomi by VMware ftp/ftpcube||2015-12-15|Has expired: No releases for 8+ years, no supporting newer wxWidget astro/libroadnav||2015-12-15|Has expired: No releases for 8+ years, no supporting newer wxWidget astro/roadnav||2015-12-15|Has expired: No releases for 8+ years, no supporting newer wxWidget www/joomla15||2015-12-18|Has expired: Joomla 1.5.x reached its End of Life in September 2012. Please update to a current version www/joomla25||2015-12-18|Has expired: Joomla 2.5.x reached its End of Life in December 2014. Please update to a current version devel/rubygem-tins0||2015-12-18|Has expired: not used by other ports anymore sysutils/busybox-unstable|sysutils/busybox|2015-12-20|Stable version is more current editors/calligra-l10n-ia||2015-12-21|Not shipped by Calligra 2.9.10 editors/calligra-l10n-nds||2015-12-21|Not shipped by Calligra 2.9.10 editors/calligra-l10n-sl||2015-12-21|Not shipped by Calligra 2.9.10 japanese/ochusha||2015-12-25|Has expired: Development ceased in 2008, other options available sysutils/phttpget||2015-12-27|Already in base system (/usr/libexec/phttpget) editors/sublime|editors/linux-sublime|2015-12-29|Renamed (Linux binary port) dns/py-dns3|dns/py-py3dns|2015-12-29|Renamed to match upstream naming editors/sublime3|editors/linux-sublime3|2015-12-29|Renamed (Linux binary port) mail/py-spf|mail/py-pyspf|2015-12-29|Renamed to match upstream naming databases/py-memcached|databases/py-python-memcached|2015-12-30|Renamed to match upstream naming devel/py-hashring|devel/py-hash_ring|2015-12-30|Renamed to match upstream naming devel/subversion17|devel/subversion|2015-12-30|Has expired: EoL, use devel/subversion www/ocsigen||2015-12-30|Has expired: Broken for more than 6 months devel/monodevelop-database||2015-12-30|Has expired: Broken for more than 6 months lang/cduce||2015-12-30|Has expired: Broken for more than 6 months science/hdf-java||2015-12-30|Has expired: Broken for more than 6 months math/p5-Math-Geometry-Planar-GPC-Polygon||2015-12-30|Has expired: Broken for more than 6 months www/eliom||2015-12-30|Has expired: Depends on broken and expiring www/ocsigen audio/py-fastaudio||2015-12-30|Has expired: Broken for more than 6 months devel/jgoodies-common||2015-12-30|Has expired: Broken for more than 6 months graphics/pinta||2015-12-30|Has expired: Broken for more than 6 months games/kanatest||2015-12-30|Has expired: Broken for more than 6 months editors/bless||2015-12-30|Has expired: Broken for more than 6 months security/burpsuite||2015-12-30|Has expired: Broken for more than 6 months dns/bind10|dns/bundy|2015-12-31|Has expired: Is not developed any more, use dns/bundy lang/perl5.16||2015-12-31|Has expired: Unsupported, please upgrade to a more recent version of Perl devel/py-distutils-extra|devel/py-python-distutils-extra|2015-12-31|Renamed to match upstream naming irc/irssi-devel||2016-01-01|Has expired: Older than irc/irssi multimedia/spotify-websocket-api||2016-01-01|Has expired: login fails due to protocol changes net-mgmt/unifi2|net-mgmt/unifi3|2016-01-01|Has expired: Unifi 2.x is EoL. Please upgrade to net-mgmt/unifi3 misc/kde4-l10n-th||2016-01-01|Has expired: Upstream ceased maintainance of this translation misc/kde4-l10n-tg||2016-01-01|Has expired: Upstream ceased maintainance of this translation misc/kde4-l10n-si||2016-01-01|Has expired: Upstream ceased maintainance of this translation games/supertux-devel|games/supertux2|2016-01-05|Renamed along with update to new stable release games/duke3d-data||2016-01-06|Incorporated into games/eduke32 devel/msp430-gdb|devel/gcc-msp430-ti-toolchain|2016-01-08|Has expired: Obsolete. Please, use devel/gcc-msp430-ti-toolchain devel/msp430-gcc|devel/gcc-msp430-ti-toolchain|2016-01-08|Has expired: Obsolete. Please, use devel/gcc-msp430-ti-toolchain devel/msp430mcu|devel/gcc-msp430-ti-toolchain|2016-01-08|Has expired: Obsolete. Please, use devel/gcc-msp430-ti-toolchain devel/msp430-libc|devel/gcc-msp430-ti-toolchain|2016-01-08|Has expired: Obsolete. Please, use devel/gcc-msp430-ti-toolchain devel/msp430-binutils|devel/gcc-msp430-ti-toolchain|2016-01-08|Has expired: Obsolete. Please, use devel/gcc-msp430-ti-toolchain devel/e_dbus||2016-01-15|Has expired: Not used anymore by x11-wm/enlightenment www/xpi-locale-switcher||2016-01-15|Has expired: incompatible with Firefox 34 (and later presumably) textproc/py-gettext|textproc/py-python-gettext|2016-01-16|Renamed to match upstream name archivers/jzip.org||2016-01-24|Has expired: Abandoned, outdated (no updates since 2003) databases/mywwwatcher||2016-01-25|Has expired: PHP 5.4 EOL reached databases/php5-creole||2016-01-25|Has expired: PHP 5.4 EOL reached databases/php5-propel||2016-01-25|Has expired: PHP 5.4 EOL reached deskutils/fengoffice||2016-01-25|Has expired: PHP 5.4 EOL reached devel/simpletest||2016-01-25|Has expired: PHP 5.4 EOL reached graphics/php5-swfed||2016-01-25|Has expired: PHP 5.4 EOL reached sysutils/loganalyzer||2016-01-25|Has expired: PHP 5.4 EOL reached textproc/simplehtmldom||2016-01-25|Has expired: PHP 5.4 EOL reached www/autoindex2||2016-01-25|Has expired: PHP 5.4 EOL reached www/cakephp11||2016-01-25|Has expired: PHP 5.4 EOL reached www/cakephp13||2016-01-25|Has expired: PHP 5.4 EOL reached www/cakephp21||2016-01-25|Has expired: PHP 5.4 EOL reached www/cakephp22||2016-01-25|Has expired: PHP 5.4 EOL reached www/cakephp23||2016-01-25|Has expired: PHP 5.4 EOL reached www/fluxcms||2016-01-25|Has expired: PHP 5.4 EOL reached www/fusionpbx||2016-01-25|Has expired: PHP 5.4 EOL reached www/jawstats||2016-01-25|Has expired: PHP 5.4 EOL reached www/ojs2||2016-01-25|Has expired: PHP 5.4 EOL reached www/webcalendar||2016-01-25|Has expired: PHP 5.4 EOL reached devel/i386-linux-binutils||2016-01-26|Not any usage in the ports tree www/xpi-bookmarkdd||2016-01-30|Has expired, incompatible with Firefox 34+ databases/php5-redis||2016-01-30|Has expired: PHP 5.4 EOL reached, use databases/php55-redis or databases/php56-redis instead audio/linux-c6-pulseaudio-libs-glib2||2016-01-31|Integrated into audio/linux-c6-pulseaudio-libs devel/pdcurses-the||2016-02-01|Has expired: Seperate port is no longer needed, see PR www/py-django17||2016-02-01|Has expired: End of extended support: December 1, 2015 www/codeigniter22|www/codeigniter|2016-02-01|Has expired: Codeigniter 2.2.x reached its End of Life on 31 October 2015. Please update to the current version java/wildfly80||2016-02-01|Has expired: Fully EOL when version 8.2 was released java/wildfly81||2016-02-01|Has expired: Fully EOL when version 9.0 was released mail/phpmailer2|mail/phpmailer|2016-02-01|Has expired: Obsolete, use mail/phpmailer instead cad/pycam|cad/py-pycam|2016-02-02|Add py- prefix to directory name lang/python32||2016-02-02|Has expired: Full EOL reached. Please update to Python 3.5 devel/py-setuptools32||2016-02-02|Has expired: Full EOL reached. Please update to Python 3.5 databases/py32-gdbm||2016-02-02|Has expired: Full EOL reached. Please update to Python 3.5 databases/py32-sqlite3||2016-02-02|Has expired: Full EOL reached. Please update to Python 3.5 x11-toolkits/py32-tkinter||2016-02-02|Has expired: Full EOL reached. Please update to Python 3.5 sysutils/puppet|sysutils/puppet38|2016-02-05|Renamed devel/etcdctl|devel/etcd|2016-02-06|Has expired: etcdctl is now part of etcd, following the change from the upstream security/polarssl||2016-02-07|Has expired: Upstream is ending support for 1.2.x multimedia/xbmc-addon-pvr||2016-02-12|Has expired: Does not work with multimedia/kodi 15.x and newer security/py-openid|security/py-python-openid|2016-02-13|Renamed to match upstream (PyPI) name ports-mgmt/tinderbox-devel|ports-mgmt/tinderbox|2016-02-14|Has expired: use newer stable version (ports-mgmt/tinderbox) deskutils/alacarte||2016-02-14|Not part of GNOME anymore deskutils/gnome-shell-extension-calculator||2016-02-14|Obsolete. gnome-calculator provides the functionality since GNOME 3.14 archivers/php5-bz2||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php archivers/php5-phar||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php archivers/php5-zip||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php archivers/php5-zlib||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php converters/php5-iconv||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php converters/php5-mbstring||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php converters/php5-recode||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-dba||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-interbase||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-mssql||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-mysql||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-mysqli||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-odbc||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-pdo||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-pdo_dblib||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-pdo_firebird||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-pdo_mysql||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-pdo_odbc||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-pdo_pgsql||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-pdo_sqlite||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-pgsql||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-sqlite3||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php databases/php5-sybase_ct||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php devel/php5-gettext||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php devel/php5-json||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php devel/php5-pcntl||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php devel/php5-readline||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php devel/php5-shmop||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php devel/php5-sysvmsg||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php devel/php5-sysvsem||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php devel/php5-sysvshm||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php devel/php5-tokenizer||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php ftp/php5-curl||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php ftp/php5-ftp||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php graphics/php5-exif||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php graphics/php5-gd||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php lang/php5||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php lang/php5-extensions||2016-02-14|PHP 5.4 EOL reached mail/php5-imap||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php math/php5-bcmath||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php math/php5-gmp||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php misc/php5-calendar||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php net/php5-ldap||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php net/php5-soap||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php net/php5-sockets||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php net/php5-xmlrpc||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php net-mgmt/php5-snmp||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php security/php5-filter||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php security/php5-hash||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php security/php5-mcrypt||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php security/php5-openssl||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php sysutils/php5-fileinfo||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php sysutils/php5-posix||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php textproc/php5-ctype||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php textproc/php5-dom||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php textproc/php5-pspell||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php textproc/php5-simplexml||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php textproc/php5-wddx||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php textproc/php5-xml||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php textproc/php5-xmlreader||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php textproc/php5-xmlwriter||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php textproc/php5-xsl||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php www/mod_php5||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php www/pecl-zendopcache||2016-02-14|PHP 5.4 EOL reached www/php5-session||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php www/php5-tidy||2016-02-14|PHP 5.4 is End of Life http://php.net/supported-versions.php mail/pronto||2016-02-18|No release since 2002 http://www.muhri.net/pronto/page.php3?node=news russian/muttprint||2016-02-25|The Russian translation is included in print/muttprint security/openssh-portable-devel|security/openssh-portable|2016-02-29|Outdated and insecure, use the main port audio/audacious-dumb||2016-02-29|Has expired: Broken for more than 6 months net/rubygem-amqp067|net/rubygem-bunny|2016-02-29|Has expired: Upstream prefers net/rubygem-bunny devel/py-unittestplus||2016-02-29|Has expired: Tarballs and upstream website disappeared net/samba4||2016-03-02|Has expired: not supported by the upstream net/isc-dhcp42-client|net/isc-dhcp43-client|2016-03-02|Has expired: isc-dhcp 4.2 is End of Life net/isc-dhcp41-relay|net/isc-dhcp43-relay|2016-03-02|Has expired: isc-dhcp 4.1 is now End of Life net/isc-dhcp42-relay|net/isc-dhcp43-relay|2016-03-02|Has expired: isc-dhcp 4.2 is End of Life net/isc-dhcp41-client|net/isc-dhcp43-client|2016-03-02|Has expired: isc-dhcp 4.1 is now End of Life net/isc-dhcp42-server|net/isc-dhcp43-server|2016-03-02|Has expired: isc-dhcp 4.2 is End of Life devel/pear-IO_Bit||2016-03-02|Has expired: Unsupported upstream graphics/pear-IO_SWF||2016-03-02|Has expired: Unsupported upstream math/k3dsurf|math/mathmod|2016-03-04|K3DSurf was the previous release, based on Qt3, MathMod is the new one, based on Qt5 databases/mysql-workbench52||2016-03-05|Has expired: Broken for more than 6 months math/geogebra-i18n|math/geogebra|2016-03-06|Portname simplified devel/seed||2016-03-06|Has expired: No longer used devel/seed3||2016-03-06|Has expired: No longer used audio/waheela||2016-03-06|Has expired: Distfiles unavailable and no updates in 6 years sysutils/logstash-contrib||2016-03-06|Has expired: Upstream now distributing plugins separately: see https://github.com/logstash-plugins devel/p5-DateTime-Event-SolarTerm|devel/p5-DateTime-Astro|2016-03-07|Has been part of DateTime-Astro for a long time devel/p5-DateTime-Util-Astro|devel/p5-DateTime-Astro|2016-03-07|Has been part of DateTime-Astro for a long time security/regripperplugins||2016-03-07|Merged into security/regripper textproc/elasticsearch-plugin-marvel2|textproc/elasticsearch2-plugin-marvel|2016-03-10|Rename to match other Elasticsearch 2 plugins print/cups-base|print/cups|2016-03-11|Merged print/cups-client|print/cups|2016-03-11|Merged print/cups-image|print/cups|2016-03-11|Merged print/cups-pstoraster|print/cups-filters|2016-03-11|Obsolete russian/MT||2016-03-13|Has expired: Reached it's EOL in September 2015 www/MT||2016-03-13|Has expired: Reached it's EOL in September 2015 security/openvas-libnasl|security/openvas-libraries|2016-03-17|Merged security/openvas-server|security/openvas-scanner|2016-03-17|Renamed security/openvas-plugins|security/openvas-scanner|2016-03-17|Merged security/openvas-client||2016-03-17|Discontinued, try security/greenbone-security-assistant devel/py-icu|devel/py-pyicu|2016-03-19|Renamed to match upstream (PyPI) name www/eaccelerator||2016-03-20|Has expired: cannot be installed: doesn't work with lang/php56 port (doesn't support PHP 5.5 5.6 70) devel/pecl-inclued||2016-03-20|Has expired: cannot be installed: doesn't work with lang/php56 port (doesn't support PHP 5.5 5.6 70) security/pecl-taint||2016-03-20|Has expired: cannot be installed: doesn't work with lang/php56 port (doesn't support PHP 5.5 5.6 70) net/libnids-libnet11|net/libnids|2016-03-20|Same content lang/cloudabi-clang|devel/cloudabi-toolchain|2016-03-21|Merged graphics/hugin-devel||2016-03-22|overtaken by released version graphics/hugin-2016||2016-03-22|overtaken by released version net/rubygem-omniauth-cas3||2016-03-28|Removed textproc/libvisio||2016-03-28|No longer used by other ports: use textproc/libvisio01 instead textproc/libe-book00||2016-03-28|No longer used by other ports: use textproc/libe-book instead devel/erlang-ssl_verify_hostname|devel/erlang-ssl_verify_fun|2016-03-28|Project renamed graphics/libtxc_dxtn|graphics/s2tc|2016-03-29|Superseded by graphics/s2tc www/session2||2016-03-29|Has expired: That is a part of Quixote webapp framework we no longer have in ports www/py-django-pipeline14||2016-03-29|Has expired: This port depends upon expired www/py-django16 and have no consumers textproc/libwpd||2016-03-29|Has expired: Not used any more graphics/libwpg||2016-03-29|Has expired: Not used any more textproc/libwps02||2016-03-29|Has expired: Not used any more textproc/libabw00||2016-03-29|Has expired: Not used any more databases/cassandra||2016-03-29|Has expired: 1.2.x has reached EOL, upgrade to a supported version of Cassandra databases/rubygem-after_commit_queue-rails41|databases/rubygem-after_commit_queue|2016-03-31|Has expired: Rails 4.1 is no longer supported - please switch to Rails 4.2 textproc/rubygem-jekyll-assets1|textproc/rubygem-jekyll-assets|2016-03-31|Has expired: Use textproc/rubygem-jekyll-assets instead devel/rubygem-sprockets-rails-rails41|devel/rubygem-sprockets-rails|2016-03-31|Has expired: Rails 4.1 is no longer supported - please switch to Rails 4.2 mail/rubygem-actionmailer41|mail/rubygem-actionmailer4|2016-03-31|Has expired: Rails 4.1 is no longer supported - please switch to Rails 4.2 databases/rubygem-activemodel41|databases/rubygem-activemodel4|2016-03-31|Has expired: Rails 4.1 is no longer supported - please switch to Rails 4.2 devel/rubygem-activesupport41|devel/rubygem-activesupport4|2016-03-31|Has expired: Rails 4.1 is no longer supported - please switch to Rails 4.2 www/rubygem-actionpack41|www/rubygem-actionpack4|2016-03-31|Has expired: Rails 4.1 is no longer supported - please switch to Rails 4.2 devel/rubygem-actionview41|devel/rubygem-actionview|2016-03-31|Has expired: Rails 4.1 is no longer supported - please switch to Rails 4.2 databases/rubygem-paranoia-rails41|databases/rubygem-paranoia|2016-03-31|Has expired: Rails 4.1 is no longer supported - please switch to Rails 4.2 databases/rubygem-activerecord41|databases/rubygem-activerecord4|2016-03-31|Has expired: Rails 4.1 is no longer supported - please switch to Rails 4.2 textproc/rubygem-sass-rails4-rails41|textproc/rubygem-sass-rails4|2016-03-31|Has expired: Rails 4.1 is no longer supported - please switch to Rails 4.2 www/rubygem-turbolinks-rails41|www/rubygem-turbolinks|2016-03-31|Has expired: Rails 4.1 is no longer supported - please switch to Rails 4.2 devel/rubygem-omniauth_crowd-rails41|devel/rubygem-omniauth_crowd|2016-03-31|Has expired: Rails 4.1 is no longer supported - please switch to Rails 4.2 www/rubygem-railties41|www/rubygem-railties4|2016-03-31|Has expired: Rails 4.1 is no longer supported - please switch to Rails 4.2 devel/rubygem-jbuilder-rails41|devel/rubygem-jbuilder|2016-03-31|Has expired: Rails 4.1 is no longer supported - please switch to Rails 4.2 textproc/py-genshi-devel|textproc/py-genshi|2016-03-31|Has expired: The port is no longer updated and behind the main genshi port www/py-satchmo||2016-04-03|Has expired: Project development unmaintained www/py-ua-parser|devel/py-ua_parser|2016-04-04|Duplicate port deleted net-mgmt/weathermap||2016-04-04|Has expired: Distfile unavailable, website no longer exists accessibility/gnopernicus|accessibility/orca|2016-04-08|Has expired: Not developed upstream anymore. Obsoleted by accessibility/orca textproc/p5-ElasticSearch-SearchBuilder|textproc/p5-Search-Elasticsearch|2016-04-10|Has expired: Use textproc/p5-Search-Elasticsearch which is the official client textproc/p5-ElasticSearch-legacy|textproc/p5-Search-Elasticsearch|2016-04-10|Has expired: Use textproc/p5-Search-Elasticsearch which is the official client textproc/py-openpyxl1|textproc/py-openpyxl|2016-04-10|Has expired: Use textproc/py-openpyxl instead devel/libmcs||2016-04-13|Development no longer active and is not used any more www/node-devel|www/node|2016-04-13|Upstream no longer releases a development version graphics/kipi-plugin-googledrive||2016-04-14|Merged into graphics/kipi-plugin-googleservices graphics/kipi-plugin-picasawebexport||2016-04-14|Merged into graphics/kipi-plugin-googleservices security/engine_pkcs11|security/libp11|2016-04-20|Merged devel/elixir-timex-interval||2016-04-22|Merged into devel/elixir-timex upstream devel/p5-Test-Stream|devel/p5-Test2-Suite|2016-04-23|Use devel/p5-Test2-Suite instead deskutils/qlabels||2016-04-23|Has expired: Does not fetch, unmaintained french/tvdownloader||2016-04-23|Has expired: Many channels have modified their protocols and cannot be DL anymore comms/cdr_read||2016-04-23|Has expired: unfetchable russian/rubygem-rutils||2016-04-23|Has expired: Deprecated by upstream devel/rubygem-dotenv-deployment||2016-04-23|Has expired: Deprecated by upstream in latest version (0.3.0) www/p5-LWP-ConsoleLogger||2016-04-23|Has expired: Depends on expiring www/p5-HTTP-CookieMonster www/p5-WWW-Mechanize-Cached||2016-04-23|Has expired: Depends on expiring www/p5-HTTP-CookieMonster www/p5-HTTP-CookieMonster||2016-04-23|Has expired: Broken for more than 6 months misc/diary-hercules||2016-04-23|Has expired: Broken for more than 6 months graphics/ffff||2016-04-23|Has expired: Broken for more than 6 months net-im/sigram||2016-04-23|Has expired: Broken for more than 6 months games/annelid||2016-04-23|Has expired: Broken for more than 6 months science/py-pydap||2016-04-23|Has expired: Broken for more than 6 months sysutils/su2||2016-04-23|Has expired: Broken for more than 6 months www/download-gemist||2016-04-23|Has expired: Broken for more than 6 months databases/p5-qdbm||2016-04-23|Has expired: Broken for more than 6 months deskutils/ladon||2016-04-23|Has expired: Broken for more than 6 months java/linux-sun-jdk17||2016-04-24|Has expired: Unsupported and known for multiple security vulnerabilities devel/compiler-rt-devel|devel/llvm-devel|2016-04-24|Folded back in to devel/llvm-devel databases/rrdtool10|databases/rrdtool|2016-05-02|Old version, not maintained any more devel/sope|devel/sope2|2016-05-02|Renamed to devel/sope2 www/sogo|www/sogo2|2016-05-02|Renamed to www/sogo2 www/sogo-activesync|www/sogo2-activesync|2016-05-02|Renamed to www/sogo2-activesync textproc/rubygem-gherkin3|textproc/rubygem-gherkin|2016-05-03|Has expired: Use textproc/rubygem-gherkin instead dns/odsclient||2016-05-03|Has expired: ODS shuts service down, so client is probably useless games/Cockatrice|games/cockatrice|2016-05-05|Renamed to games/cockatrice graphics/py-opengl|graphics/py-PyOpenGL|2016-05-09|Use correct upstream PyPI name graphics/py-opengl-accelerate|graphics/py-PyOpenGL-accelerate|2016-05-09|Use correct upstream PyPI name java/linux-sun-jre17||2016-05-09|Has expired: Unsupported and known for multiple security vulnerabilities deskutils/gnustep-notebook||2016-05-09|Has expired: Does not fetch lang/moscow_ml|lang/mosml|2016-05-11|Project renamed devel/rubygem-redmine_acts_as_taggable_on|www/rubygem-redmine_acts_as_taggable_on|2016-05-14|Duplicate port lang/gcc-aux||2016-05-16|Has expired: Use newer lang/gcc5-aux or lang/gcc6-aux compilers instead audio/deadbeef-mpris-plugin|audio/deadbeef-mpris2-plugin|2016-05-16|Has expired: Abandonware; use `audio/deadbeef-mpris2-plugin' instead net/samba41||2016-05-16|Has expired: not supported by the upstream databases/postgresql90-contrib||2016-05-16|Has expired: "EOL was reached in September 2015" databases/postgresql90-pltcl||2016-05-16|Has expired: "EOL was reached in September 2015" databases/postgresql90-docs||2016-05-16|Has expired: "EOL was reached in September 2015" devel/py-gyp-devel|devel/py-gyp|2016-05-16|Renamed to devel/py-gyp databases/py-sqlalchemy|databases/py-sqlalchemy07|2016-05-18|Renamed to databases/py-sqlalchemy07 databases/py-sqlalchemy-devel|databases/py-sqlalchemy08|2016-05-18|Renamed to databases/py-sqlalchemy08 sysutils/relaunchd|sysutils/jobd|2016-05-20|Renamed to sysutils/jobd dns/nsd3|dns/nsd|2016-05-20|Has expired: NSD 3 is EOL, please upgrade to NSD 4 in dns/nsd security/easypg||2016-05-22|Has expired: Included into emacs since 2.3 misc/kdehier4||2016-05-25|Not used since 2014 devel/maven-ant-tasks||2016-05-27|Use Maven directly graphics/py-imaging|graphics/py-pillow|2016-05-28|Has expired: Unmaintained upstream; use graphics/py-pillow databases/py-psycopg|databases/py-psycopg2|2016-05-29|Has expired: This port is obsoleted by databases/py-psycopg2 security/py-clamav|security/py-pyclamd|2016-05-30|Has expired: Not updated since 2008 by upstream and abandoned in favor of pyClamd (security/py-pyclamd) graphics/ruby-gdal||2016-05-31|Has expired: disabled by upstream (https://trac.osgeo.org/gdal/changeset/28756) net/omcmd||2016-06-01|Has expired: Unfetchable and depends on expired net/isc-dhcp41-server net/isc-dhcp41-server|net/isc-dhcp43-server|2016-06-01|Has expired: isc-dhcp 4.1 is now End of Life lang/ruby20||2016-06-01|Has expired: Upstream support ended java/rubygem-rjb||2016-06-02|Has expired: fails to create JVM devel/rubygem-atoulme-antwrap||2016-06-02|Removed, depends on java/rubygem-rjb net/xmlrpc-c-devel||2016-06-11|Retired, older than net/xmlrpc-c www/drupal6-content_access||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-google_analytics||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-seo_checklist||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-pathauto||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-wysiwyg||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-advanced_help||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-path_redirect||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-webform||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-imce||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-mimedetect||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-tagadelic||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-panels||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-zeropoint||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-geshifilter||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-chaos||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-token||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-print||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-nodewords||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-image||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-menu_block||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-views||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-services||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-ckeditor||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-nice_menus||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-page_title||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6-cck||2016-06-18|Has expired: www/drupal6 upstream is EOL and port expired 2016-04-24 www/drupal6||2016-06-18|Has expired: EOL upstream as of 2016-02-24 x11-toolkits/gtk-sharp10||2016-06-20|Nothing depends on it; superseded by gtk-sharp20 and gtk-sharp30 devel/p5-ReadLine-Perl|devel/p5-Term-ReadLine-Perl|2016-06-21|Duplicates devel/p5-ReadLine-Gnu|devel/p5-Term-ReadLine-Gnu|2016-06-21|Rename to match upstream devel/p5-ReadLine-TTYtter|devel/p5-Term-ReadLine-TTYtter|2016-06-21|Rename to match upstream databases/postgresql90-client||2016-06-21|Postgresql 9.0 EoL Upstream as of September 2015 databases/postgresql90-pgtcl||2016-06-21|Postgresql 9.0 EoL Upstream as of September 2015 databases/postgresql90-plperl||2016-06-21|Postgresql 9.0 EoL Upstream as of September 2015 databases/postgresql90-plpython||2016-06-21|Postgresql 9.0 EoL Upstream as of September 2015 databases/postgresql90-server||2016-06-21|Postgresql 9.0 EoL Upstream as of September 2015 graphics/linux-c6-dri-compat|graphics/linux-c6-dri|2016-06-22|Obsolete security/py-letsencrypt|security/py-certbot|2016-06-23|The LetsEncrypt project has renamed the utility textproc/py-beautifulsoup4|www/py-beautifulsoup|2016-06-26|Duplicate port deleted textproc/kibana42|textproc/kibana45|2016-06-27|Has expired: not actively supported - use kibana 4.5 (textproc/kibana45) instead graphics/libchamplain08||2016-06-30|Has expired: Old version, not needed any more sysutils/syslog-ng35||2016-06-30|Has expired: EOL, no longer supported by bababit.hu sysutils/syslog-ng34||2016-06-30|Has expired: EOL, no longer supported by bababit.hu devel/jenkins2|devel/jenkins|2016-06-30|Has expired: Use devel/jenkins www/p5-WWW-Google-Notebook||2016-06-30|Has expired: Google Notebook has shut down sysutils/syslog-ng-incubator03||2016-06-30|Has expired: EOL, no longer supported by bababit.hu www/node5|www/node|2016-07-01|Has expired: upstream support has ended, use www/node instead devel/p5-Test2|devel/p5-Test-Simple|2016-07-02|Has expired: Test2 has been merged into Test-Simple distribution security/openpgpsdk||2016-07-04|Has expired: Broken for more than 6 months security/radiusniff||2016-07-04|Has expired: Broken for more than 6 months security/pear-Auth_OpenID||2016-07-04|Has expired: Broken for more than 6 months security/sshit||2016-07-04|Has expired: Broken for more than 6 months security/ifd-slb_rf60||2016-07-04|Has expired: Broken for more than 6 months security/rainbowcrack||2016-07-04|Has expired: Broken for more than 6 months security/vlog||2016-07-04|Has expired: Broken for more than 6 months security/cryptstring||2016-07-04|Has expired: Broken for more than 6 months x11/libdnd||2016-07-04|Has expired: Broken for more than 6 months x11/xlupe||2016-07-04|Has expired: Broken for more than 6 months x11/xco||2016-07-04|Has expired: Broken for more than 6 months x11/xclick||2016-07-04|Has expired: Broken for more than 6 months devel/ocfpcsc||2016-07-04|Has expired: Broken for more than 6 months devel/dits||2016-07-04|Has expired: Broken for more than 6 months devel/ruby-cache||2016-07-04|Has expired: Broken for more than 6 months devel/rapidsvn||2016-07-04|Has expired: Broken for more than 6 months devel/svnkit||2016-07-04|Has expired: Broken for more than 6 months devel/py-EnthoughtBase||2016-07-04|Has expired: Broken for more than 6 months devel/cl-uffi||2016-07-04|Has expired: Broken for more than 6 months devel/ruby-event-loop||2016-07-04|Has expired: Broken for more than 6 months devel/libqxt||2016-07-04|Has expired: Broken for more than 6 months devel/dasm||2016-07-04|Has expired: Broken for more than 6 months devel/libopendaap||2016-07-04|Has expired: Broken for more than 6 months devel/cl-uffi-sbcl||2016-07-04|Has expired: Depends on expiring devel/cl-uffi devel/cvs2p4||2016-07-04|Has expired: Broken for more than 6 months devel/bufferpool||2016-07-04|Has expired: Broken for more than 6 months devel/ifd-test||2016-07-04|Has expired: Broken for more than 6 months devel/eric4||2016-07-04|Has expired: Broken for more than 6 months devel/uclmmbase||2016-07-04|Has expired: Broken for more than 6 months devel/obfuscatejs||2016-07-04|Has expired: Broken for more than 6 months devel/libbnr||2016-07-04|Has expired: Broken for more than 6 months devel/c4||2016-07-04|Has expired: Broken for more than 6 months devel/memcheck||2016-07-04|Has expired: Broken for more than 6 months devel/liblcfg||2016-07-04|Has expired: Broken for more than 6 months devel/svndelta||2016-07-04|Has expired: Broken for more than 6 months devel/papp||2016-07-04|Has expired: Broken for more than 6 months devel/mk||2016-07-04|Has expired: Broken for more than 6 months devel/avltree||2016-07-04|Has expired: Broken for more than 6 months devel/cbind||2016-07-04|Has expired: Broken for more than 6 months devel/tclgetopts||2016-07-04|Has expired: Broken for more than 6 months devel/antlrworks||2016-07-04|Has expired: Broken for more than 6 months devel/acme||2016-07-04|Has expired: Broken for more than 6 months devel/libopensync022||2016-07-04|Has expired: Broken for more than 6 months archivers/epkg||2016-07-04|Has expired: Broken for more than 6 months print/enscriptfonts||2016-07-04|Has expired: Broken for more than 6 months print/mup||2016-07-04|Has expired: Broken for more than 6 months lang/lua-mode.el||2016-07-04|Has expired: Broken for more than 6 months lang/s9fes||2016-07-04|Has expired: Broken for more than 6 months lang/alisp||2016-07-04|Has expired: Broken for more than 6 months lang/intel2gas||2016-07-04|Has expired: Broken for more than 6 months lang/stalin||2016-07-04|Has expired: Broken for more than 6 months french/eric4||2016-07-04|Has expired: Depends on expiring devel/eric4 textproc/exslt||2016-07-04|Has expired: Broken for more than 6 months textproc/xt||2016-07-04|Has expired: Broken for more than 6 months textproc/xslint||2016-07-04|Has expired: Broken for more than 6 months textproc/cbedic||2016-07-04|Has expired: Broken for more than 6 months textproc/tralics||2016-07-04|Has expired: Broken for more than 6 months textproc/docbookide.el||2016-07-04|Has expired: Broken for more than 6 months textproc/glpi-plugins-AdditionalReports||2016-07-04|Has expired: Broken for more than 6 months textproc/tdhkit||2016-07-04|Has expired: Broken for more than 6 months textproc/p5-Groonga-API||2016-07-04|Has expired: Broken for more than 6 months textproc/glpi-plugins-DataInjection||2016-07-04|Has expired: Broken for more than 6 months dns/ldnsm||2016-07-04|Has expired: Broken for more than 6 months japanese/guesswork-classic||2016-07-04|Has expired: Broken for more than 6 months japanese/texinfo||2016-07-04|Has expired: Broken for more than 6 months japanese/jyuroku||2016-07-04|Has expired: Broken for more than 6 months japanese/mtools||2016-07-04|Has expired: Broken for more than 6 months palm/pdbar||2016-07-04|Has expired: Broken for more than 6 months graphics/gplot||2016-07-04|Has expired: Broken for more than 6 months graphics/white_dune||2016-07-04|Has expired: Broken for more than 6 months graphics/whirlgif||2016-07-04|Has expired: Broken for more than 6 months graphics/libaux||2016-07-04|Has expired: Broken for more than 6 months graphics/import-pictures||2016-07-04|Has expired: Broken for more than 6 months math/xgobi||2016-07-04|Has expired: Broken for more than 6 months math/dcdflib||2016-07-04|Has expired: Broken for more than 6 months math/libneural||2016-07-04|Has expired: Broken for more than 6 months math/open-axiom||2016-07-04|Has expired: Broken for more than 6 months irc/nefarious||2016-07-04|Has expired: Broken for more than 6 months irc/slirc||2016-07-04|Has expired: Broken for more than 6 months irc/qwebirc||2016-07-04|Has expired: Broken for more than 6 months biology/platon||2016-07-04|Has expired: Broken for more than 6 months news/slnr||2016-07-04|Has expired: Broken for more than 6 months science/jmol||2016-07-04|Has expired: Broken for more than 6 months net/nstxd||2016-07-04|Has expired: Broken for more than 6 months net/sprinkle||2016-07-04|Has expired: Broken for more than 6 months editors/ssam||2016-07-04|Has expired: Broken for more than 6 months editors/fb||2016-07-04|Has expired: Broken for more than 6 months misc/quotes||2016-07-04|Has expired: Broken for more than 6 months misc/boxquote.el||2016-07-04|Has expired: Broken for more than 6 months misc/pypanda||2016-07-04|Has expired: Broken for more than 6 months misc/cuecat||2016-07-04|Has expired: Broken for more than 6 months deskutils/displaycalibrator||2016-07-04|Has expired: Broken for more than 6 months german/eric4||2016-07-04|Has expired: Depends on expiring devel/eric4 multimedia/vic||2016-07-04|Has expired: Depends on expiring devel/uclmmbase multimedia/ggrab||2016-07-04|Has expired: Broken for more than 6 months emulators/dynamips||2016-07-04|Has expired: Broken for more than 6 months emulators/dynamips-devel||2016-07-04|Has expired: Broken for more than 6 months emulators/sim6811||2016-07-04|Has expired: Broken for more than 6 months emulators/minivmac||2016-07-04|Has expired: Broken for more than 6 months cad/qcad-partslib||2016-07-04|Has expired: Broken for more than 6 months comms/dump1090_mr||2016-07-04|Has expired: Broken for more than 6 months x11-fm/asfiles||2016-07-04|Has expired: Depends on expiring x11/libdnd x11-fonts/fonts-te||2016-07-04|Has expired: Broken for more than 6 months sysutils/rsyncmanager||2016-07-04|Has expired: Broken for more than 6 months sysutils/jfbterm||2016-07-04|Has expired: Broken for more than 6 months sysutils/daedalus||2016-07-04|Has expired: Broken for more than 6 months sysutils/pcfclock||2016-07-04|Has expired: Broken for more than 6 months sysutils/vlogger||2016-07-04|Has expired: Broken for more than 6 months sysutils/bontmia||2016-07-04|Has expired: Broken for more than 6 months mail/pop3gwd||2016-07-04|Has expired: Broken for more than 6 months mail/mailtray||2016-07-04|Has expired: Broken for more than 6 months mail/pflogstats||2016-07-04|Has expired: Broken for more than 6 months mail/exact||2016-07-04|Has expired: Broken for more than 6 months mail/wmpop3||2016-07-04|Has expired: Broken for more than 6 months mail/gld||2016-07-04|Has expired: Broken for more than 6 months mail/dsbl-testers||2016-07-04|Has expired: Broken for more than 6 months mail/vqregister||2016-07-04|Has expired: Broken for more than 6 months mail/atmail||2016-07-04|Has expired: Broken for more than 6 months mail/ml||2016-07-04|Has expired: Broken for more than 6 months net-im/icb||2016-07-04|Has expired: Broken for more than 6 months net-im/cicquin||2016-07-04|Has expired: Broken for more than 6 months net-im/pidgin-rhythmbox||2016-07-04|Has expired: Broken for more than 6 months russian/eric4||2016-07-04|Has expired: Depends on expiring devel/eric4 russian/fortune-bashorgru||2016-07-04|Has expired: Broken for more than 6 months www/xpi-clearfields||2016-07-04|Has expired: Broken for more than 6 months www/pecl-varnish||2016-07-04|Has expired: Broken for more than 6 months www/py-requests-oauth-hook||2016-07-04|Has expired: Broken for more than 6 months www/hudson||2016-07-04|Has expired: Broken for more than 6 months www/xpi-mldonkey||2016-07-04|Has expired: Broken for more than 6 months www/xpi-cookiesafe||2016-07-04|Has expired: Broken for more than 6 months www/trac-mastertickets||2016-07-04|Has expired: Broken for more than 6 months www/dotclear||2016-07-04|Has expired: Broken for more than 6 months www/ruby-wgettsv||2016-07-04|Has expired: Broken for more than 6 months www/wwwstat||2016-07-04|Has expired: Broken for more than 6 months www/xpi-prism||2016-07-04|Has expired: Broken for more than 6 months www/xpi-fasterfox||2016-07-04|Has expired: Broken for more than 6 months www/siteframe||2016-07-04|Has expired: Broken for more than 6 months www/py-urljr||2016-07-04|Has expired: Broken for more than 6 months www/reviewboard||2016-07-04|Has expired: Broken for more than 6 months www/xpi-tabletools||2016-07-04|Has expired: Broken for more than 6 months www/wikindx||2016-07-04|Has expired: Broken for more than 6 months www/typolight||2016-07-04|Has expired: Broken for more than 6 months www/varnish-libvmod-header||2016-07-04|Has expired: Broken for more than 6 months www/xpi-gbrain||2016-07-04|Has expired: Broken for more than 6 months www/trac-robotstxt||2016-07-04|Has expired: Broken for more than 6 months www/simplog||2016-07-04|Has expired: Broken for more than 6 months www/chtml||2016-07-04|Has expired: Broken for more than 6 months databases/postgresql_autodoc||2016-07-04|Has expired: Broken for more than 6 months databases/oracle_odbc_driver||2016-07-04|Has expired: Broken for more than 6 months databases/mysql-xql||2016-07-04|Has expired: Broken for more than 6 months databases/mysql-udf-sys||2016-07-04|Has expired: Broken for more than 6 months games/lucidlife||2016-07-04|Has expired: Broken for more than 6 months games/gma||2016-07-04|Has expired: Broken for more than 6 months games/smiley||2016-07-04|Has expired: Broken for more than 6 months games/noegnud-littlehack||2016-07-04|Has expired: Broken for more than 6 months games/sdlquake2||2016-07-04|Has expired: Broken for more than 6 months games/daimonin||2016-07-04|Has expired: Depends on expiring games/daimonin-music games/noegnud-nethack||2016-07-04|Has expired: Broken for more than 6 months games/xbomber||2016-07-04|Has expired: Broken for more than 6 months games/xwelltris||2016-07-04|Has expired: Broken for more than 6 months games/ftjava||2016-07-04|Has expired: Broken for more than 6 months games/daimonin-music||2016-07-04|Has expired: Broken for more than 6 months games/gno3dtet||2016-07-04|Has expired: Broken for more than 6 months games/qtv||2016-07-04|Has expired: Broken for more than 6 months games/xwordpy||2016-07-04|Has expired: Broken for more than 6 months games/netris||2016-07-04|Has expired: Broken for more than 6 months games/rt2-demo||2016-07-04|Has expired: Broken for more than 6 months games/noegnud-addons||2016-07-04|Has expired: Broken for more than 6 months games/noegnud-nethack-deet||2016-07-04|Has expired: Broken for more than 6 months games/live-f1||2016-07-04|Has expired: Broken for more than 6 months games/xonix||2016-07-04|Has expired: Broken for more than 6 months games/fgkicker||2016-07-04|Has expired: Broken for more than 6 months games/tank||2016-07-04|Has expired: Depends on expiring graphics/libaux games/linux-nwserver||2016-07-04|Has expired: Broken for more than 6 months games/quake2-zaero||2016-07-04|Has expired: Broken for more than 6 months games/pyching||2016-07-04|Has expired: Broken for more than 6 months games/thevalley||2016-07-04|Has expired: Broken for more than 6 months games/xroads||2016-07-04|Has expired: Broken for more than 6 months games/fxsudoku||2016-07-04|Has expired: Broken for more than 6 months games/sudoku||2016-07-04|Has expired: Broken for more than 6 months games/kmancala||2016-07-04|Has expired: Broken for more than 6 months games/plonx||2016-07-04|Has expired: Broken for more than 6 months games/wmminichess||2016-07-04|Has expired: Broken for more than 6 months games/noegnud-slashem||2016-07-04|Has expired: Broken for more than 6 months games/latrine||2016-07-04|Has expired: Broken for more than 6 months games/pysycache-themes||2016-07-04|Has expired: Broken for more than 6 months games/nibbles||2016-07-04|Has expired: Broken for more than 6 months games/hlstatsx||2016-07-04|Has expired: Broken for more than 6 months audio/streamtuner||2016-07-04|Has expired: Broken for more than 6 months audio/mangler||2016-07-04|Has expired: Broken for more than 6 months audio/hawkvoice||2016-07-04|Has expired: Broken for more than 6 months x11-wm/e-module-mpdule||2016-07-04|Has expired: Broken for more than 6 months x11-wm/e-module-tclock||2016-07-04|Has expired: Broken for more than 6 months x11-wm/musca||2016-07-04|Has expired: Broken for more than 6 months x11-wm/e-module-places||2016-07-04|Has expired: Broken for more than 6 months x11-wm/e-module-forecasts||2016-07-04|Has expired: Broken for more than 6 months x11-wm/e-module-net||2016-07-04|Has expired: Broken for more than 6 months x11-wm/e-module-penguins||2016-07-04|Has expired: Broken for more than 6 months ftp/fget||2016-07-04|Has expired: Broken for more than 6 months net-mgmt/netmond||2016-07-04|Has expired: Broken for more than 6 months net-mgmt/ipfm||2016-07-04|Has expired: Broken for more than 6 months textproc/py-dbf|databases/py-dbf|2016-07-05|Duplicate port deleted www/yahoo-ui||2016-07-05|Has expired: Broken for more than 6 months sysutils/moosefs-cgi|sysutils/moosefs2-cgi|2016-07-07|Moved to a numbered port name sysutils/moosefs-cgiserv|sysutils/moosefs2-cgiserv|2016-07-07|Moved to a numbered port name sysutils/moosefs-chunkserver|sysutils/moosefs2-chunkserver|2016-07-07|Moved to a numbered port name sysutils/moosefs-cli|sysutils/moosefs2-cli|2016-07-07|Moved to a numbered port name sysutils/moosefs-client|sysutils/moosefs2-client|2016-07-07|Moved to a numbered port name sysutils/moosefs-master|sysutils/moosefs2-master|2016-07-07|Moved to a numbered port name sysutils/moosefs-metalogger|sysutils/moosefs2-metalogger|2016-07-07|Moved to a numbered port name sysutils/moosefs-netdump|sysutils/moosefs2-netdump|2016-07-07|Moved to a numbered port name devel/gmake-lite|devel/gmake|2016-07-08|No longer needed devel/capstone|devel/capstone3|2016-07-10|Moved to a numbered port name to make place for capstone4 net-mgmt/unifi3|net-mgmt/unifi4|2016-07-10|Has expired: Unifi 3.x is EoL. Please upgrade to net-mgmt/unifi4 net/lam||2016-07-12|Has expired: Broken for more than 6 months java/wildfly82||2016-07-17|Has expired: Fully EOL when version 10.0 was released print/tex|print/texlive-base|2016-07-30|Superseded by texlive net/tridiavnc|net/tigervnc|2016-08-01|No upstream 2005 lang/pypy3-devel|lang/pypy3|2016-08-04|Renamed to lang/pypy3 net/qt5-enginio||2016-08-06|Has expired: Deprecated by upstream from Qt 5.6 on, do not use for development multimedia/linux-xmovie||2016-08-08|Has expired: Not maintained upstream, contains security issues multimedia/linux-realplayer||2016-08-09|Has expired: Not maintained upstream, contains security issues ports-mgmt/xps||2016-08-11|Has expired: Does not support pkg(8) cad/NASTRAN|cad/NASTRAN-95|2016-08-12|Rename to match PORTNAME and upstream name math/bamg||2016-08-14|No longer maintained upstream as is now part of freefem++ www/pecl-APC||2016-08-15|No longer maintained upstream, and not working with PHP > 5.4 textproc/libtext-wrapi18n-perl|textproc/p5-Text-WrapI18N|2016-08-15|Duplicate textproc/libtext-charwidth-perl|textproc/p5-Text-CharWidth|2016-08-15|Duplicate net-mgmt/netams||2016-08-18|Has expired: unmaintained, broken on most FreeBSD platforms emulators/kqemu-kmod||2016-08-26|Not supported in any qemu version anymore emulators/kqemu-kmod-devel||2016-08-26|Not supported in any qemu version anymore www/varnish-libvmod-saintmode|www/varnish-modules|2016-09-01|Upstream moved this module into the varnish-modules collection security/letskencrypt|security/acme-client|2016-09-02|Upstream renamed the project net/asterisk||2016-09-12|Has expired: Asterisk 1.8 reached EOL on 2015-10-21 www/mediawiki124||2016-09-13|Has expired: EOL upstream sysutils/rsyslog7|sysutils/rsyslog8|2016-09-13|Has expired: Upgrade to rsyslog 8 www/moodle28||2016-09-13|Has expired: EOL upstream devel/php5-msgpack|devel/pecl-msgpack|2016-09-13|Has expired: This is an older version of the software, please use devel/pecl-msgpack textproc/asciinema|textproc/py3-asciinema|2016-09-13|Has expired: use textproc/py3-asciinema instead x11-toolkits/qtada||2016-09-13|Has expired: No development since 2012, usefulness unclear security/letsencrypt.sh|security/dehydrated|2016-09-13|Upstream renamed the project devel/py-dogpile.core|devel/py-dogpile.cache|2016-09-13|EOL upstream. Merged into devel/py-dogpile.cache since 0.6.0 archivers/php5-snappy|archivers/pecl-snappy|2016-09-15|It is PHP 7 compatible now korean/imhangul||2016-09-15|Split into korean/imhangul-gtk2 and korean/imhangul-gtk3 devel/poco-devel|devel/poco|2016-09-18|Has expired: older than stable devel/poco databases/pglogical-output|databases/pglogical|2016-09-22|databases/pglogical-output merged into databases/pglogical mail/gml||2016-09-23|Has expired: Deprecated upstream. Use native gmail tools to import net/nats|net/gnatsd|2016-09-24|Switched to upstream naming graphics/evas_generic_loaders|devel/efl|2016-09-27|Merged into devel/efl graphics/evas_generic_loaders-gst|devel/efl|2016-09-27|Merged into devel/efl graphics/evas_generic_loaders-pdf|devel/efl|2016-09-27|Merged into devel/efl graphics/evas_generic_loaders-ps|devel/efl|2016-09-27|Merged into devel/efl graphics/evas_generic_loaders-raw|devel/efl|2016-09-27|Merged into devel/efl graphics/evas_generic_loaders-svg|devel/efl|2016-09-27|Merged into devel/efl graphics/evas_generic_loaders-xcf|devel/efl|2016-09-27|Merged into devel/efl multimedia/emotion_generic_players-vlc|devel/efl|2016-09-27|Merged into devel/efl x11-toolkits/elementary|devel/efl|2016-09-27|Merged into devel/efl devel/google-sparsehash|devel/sparsehash|2016-09-30|Moved to GitHub under a different name games/fgrun||2016-09-30|Incompatible with latest flightgear math/why3-spark||2016-09-30|Has expired: Only useful for deprecated lang/spark lang/spark||2016-09-30|Has expired: Broken for more than 6 months math/alt-ergo-spark||2016-09-30|Has expired: Only useful for deprecate lang/spark security/nessus-libnasl||2016-09-30|Has expired: Abandoned, consider using OpenVAS security/nessus||2016-09-30|Has expired: Abandoned, consider using OpenVAS security/nessus-libraries||2016-09-30|Has expired: Abandoned, consider using OpenVAS security/nessus-plugins||2016-09-30|Has expired: Abandoned, consider using OpenVAS www/node010||2016-10-01|Has expired: Upstream has placed 0.10.x in maintenance mode, see https://github.com/nodejs/LTS databases/postgresql91-contrib||2016-10-01|Has expired: End-of-life is near databases/postgresql91-plpython||2016-10-01|Has expired: End-of-life is near databases/postgresql91-plperl||2016-10-01|Has expired: End-of-life is near databases/postgresql91-pltcl||2016-10-02|Has expired: End-of-life is near databases/postgresql91-docs||2016-10-02|Has expired: End-of-life is near www/mediawiki125||2016-10-02|Has expired: EOL upstream databases/postgresql91-client||2016-10-03|Has expired: End-of-life is near databases/postgresql91-pgtcl||2016-10-03|Has expired: Depends on expired PostgreSQL 9.1 databases/postgresql91-server||2016-10-03|Has expired: End-of-life is near databases/postgresql-pllua||2016-10-03|Has expired: Depends on expired PostgreSQL 9.1 multimedia/kvazaar-devel|multimedia/kvazaar|2016-10-05|Out of date: use multimedia/kvazaar for now emulators/virtualbox-ose-lite|emulators/virtualbox-ose-nox11|2016-10-05|Renamed audio/squeezeboxserver|audio/logitechmediaserver|2016-10-05|Squeezebox Server renamed to Logitech Media Server audio/squeezeboxserver-dynamicplaylist|audio/logitechmediaserver-dynamicplaylist|2016-10-05|Squeezebox Server renamed to Logitech Media Server audio/squeezeboxserver-lazysearch|audio/logitechmediaserver-lazysearch|2016-10-05|Squeezebox Server renamed to Logitech Media Server audio/squeezeboxserver-sqlplaylist|audio/logitechmediaserver-sqlplaylist|2016-10-05|Squeezebox Server renamed to Logitech Media Server audio/squeezeboxserver-superdatetime|audio/logitechmediaserver-superdatetime|2016-10-05|Squeezebox Server renamed to Logitech Media Server audio/squeezeboxserver-trackstat|audio/logitechmediaserver-trackstat|2016-10-05|Squeezebox Server renamed to Logitech Media Server net/py-uritemplate.py|net/py-uritemplate|2016-10-12|Upstream has consolidated on net/py-uritemplate misc/fortune_strfile||2016-10-14|Has expired: unmaintained and duplicated from base mail/elmo-devel|mail/elmo|2016-10-15|Has expired: Same version as mail/elmo, use it instead math/libR||2016-10-16|Has expired: math/R LIBR option is now on by default security/libbzrtp|security/bzrtp|2016-10-17|Renamed devel/gaphor||2016-10-18|Has expired: runtime failure uncorrected for 1 year after first report editors/winefish||2016-10-18|Has expired: upstream disappeared (project dead?), segfaults on multiple arches misc/jive||2016-10-20|Has expired: Offensive devel/pecl-spread||2016-10-20|Has expired: Works only with EOL php 5.5 devel/pecl-mcve||2016-10-20|Has expired: Works only with EOL php 5.5 security/pecl-tcpwrap||2016-10-20|Has expired: Works only with EOL php 5.5 devel/pecl-shape||2016-10-20|Has expired: Works only with EOL php 5.5 textproc/pecl-enchant||2016-10-20|Has expired: Works only with EOL php 5.5 databases/pecl-mysqlnd_ms||2016-10-20|Has expired: Works only with EOL php 5.5 textproc/pecl-html_parse||2016-10-20|Has expired: Works only with EOL php 5.5 mail/pecl-esmtp||2016-10-20|Has expired: Works only with EOL php 5.5 net/pecl-cvsclient||2016-10-20|Has expired: Works only with EOL php 5.5 databases/pecl-mdbtools||2016-10-20|Has expired: Works only with EOL php 5.5 databases/pecl-mysqlnd_qc||2016-10-20|Has expired: Works only with EOL php 5.5 devel/pecl-operator||2016-10-20|Has expired: Works only with EOL php 5.5 devel/pecl-parsekit||2016-10-20|Has expired: Works only with EOL php 5.5 devel/pecl-hidef||2016-10-20|Has expired: Works only with EOL php 5.5 devel/pecl-automap||2016-10-20|Has expired: Works only with EOL php 5.5 devel/pecl-bbcode||2016-10-20|Has expired: Works only with EOL php 5.5 devel/pecl-bcompiler||2016-10-20|Has expired: Works only with EOL php 5.5 databases/php-adodb-ext||2016-10-21|Has expired: Works only with EOL php 5.5 archivers/php55-bz2||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 archivers/php55-phar||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 archivers/php55-zip||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 archivers/php55-zlib||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 converters/php55-iconv||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 converters/php55-mbstring||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 converters/php55-recode||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-dba||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-interbase||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-mssql||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-mysql||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-mysqli||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-odbc||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-pdo||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-pdo_dblib||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-pdo_firebird||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-pdo_mysql||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-pdo_odbc||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-pdo_pgsql||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-pdo_sqlite||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-pgsql||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-redis||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-sqlite3||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 databases/php55-sybase_ct||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 devel/php55-gettext||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 devel/php55-json||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 devel/php55-pcntl||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 devel/php55-readline||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 devel/php55-shmop||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 devel/php55-sysvmsg||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 devel/php55-sysvsem||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 devel/php55-sysvshm||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 devel/php55-tokenizer||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 ftp/php55-curl||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 ftp/php55-ftp||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 graphics/php55-exif||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 graphics/php55-gd||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 lang/php55||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 lang/php55-extensions||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 mail/php55-imap||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 math/php55-bcmath||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 math/php55-gmp||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 misc/php55-calendar||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 net-mgmt/php55-snmp||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 net/php55-ldap||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 net/php55-soap||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 net/php55-sockets||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 net/php55-xmlrpc||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 security/php55-filter||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 security/php55-hash||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 security/php55-mcrypt||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 security/php55-openssl||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 sysutils/php55-fileinfo||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 sysutils/php55-posix||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 textproc/php55-ctype||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 textproc/php55-dom||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 textproc/php55-enchant||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 textproc/php55-pspell||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 textproc/php55-simplexml||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 textproc/php55-wddx||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 textproc/php55-xml||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 textproc/php55-xmlreader||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 textproc/php55-xmlwriter||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 textproc/php55-xsl||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 www/mod_php55||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 www/php55-opcache||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 www/php55-session||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 www/php55-tidy||2016-10-21|Has expired: EOL upstream since 21 Jul 2016 www/lighttpd-mod_geoip|www/lighttpd|2016-10-21|Integrated into www/lighttpd net/dosdetector||2016-10-23|Has expired: No maintainer activity in over a decade devel/go-btree||2016-10-26|The only consumer of this port (peco) started to bundle a snapshot devel/go-flags||2016-10-26|The only consumer of this port (peco) started to bundle a snapshot devel/go-termbox||2016-10-26|The only consumer of this port (peco) started to bundle a snapshot math/octave-forge-octgpr||2016-11-01|Has expired: Broken for more than 6 months math/octave-forge-spline-gcvspl||2016-11-01|Has expired: Broken for more than 6 months www/pear-Services_SharedBook||2016-11-01|Has expired: Broken for more than 6 months devel/py-snackwich||2016-11-01|Has expired: Depends on broken and expiring devel/py-snack math/octave-forge-ad||2016-11-01|Has expired: Broken for more than 6 months math/octave-forge-xraylib||2016-11-01|Has expired: Broken for more than 6 months x11-toolkits/py-traitsbackendwx||2016-11-01|Has expired: Broken for more than 6 months x11-toolkits/py-traitsgui||2016-11-01|Has expired: Depends on broken and expiring x11-toolkits/py-traitsbackendwx security/lsh||2016-11-01|Has expired: Broken for more than 6 months devel/py-snack||2016-11-01|Has expired: Broken for more than 6 months security/massh||2016-11-01|Has expired: Broken for more than 6 months www/hydra||2016-11-01|Has expired: Broken for more than 6 months math/py-pyfst||2016-11-01|Has expired: Broken for more than 6 months archivers/ruby-zip||2016-11-01|Has expired: Broken will all supported versions of Ruby devel/ruby-langscan||2016-11-01|Has expired: Broken will all supported versions of Ruby graphics/linux-c6-libGLU|graphics/linux-c6-dri|2016-11-04|Unused graphics/linux-c7-libGLU|graphics/linux-c7-dri|2016-11-04|Unused multimedia/libmovtar||2016-11-05|Not used anymore, abandonware devel/p5-Test-Exception-LessClever||2016-11-06|Deprecated by upstream www/py-django-piston||2016-11-06|Has expired: Abandoned upstream. Doesn't work with django>=1.6 net/remmina-plugin-i18n||2016-11-08|Plugin translations removed upstream in GH commit 2dd0526 net/p5-Net-Ping||2016-11-08|Has expired: This or newer version included in all supported versions of perl ftp/curl-hiphop||2016-11-08|Has expired: useful only for removed hiphop-php textproc/rubygem-string-scrub||2016-11-08|Has expired: needed only for EOL versions of Ruby textproc/erlang-p1xml|textproc/erlang-fast_xml|2016-11-08|Project was renamed cad/py-gdsii|cad/python-gdsii|2016-11-10|Renamed devel/py-pydasm|devel/py-capstone|2016-11-11|Has expired: No more upstream and known bugs, use devel/py-capstone instead devel/libdasm|devel/capstone3|2016-11-11|Has expired: No more upstream and known bugs, use devel/capstone3 instead security/erlang-p1tls|security/erlang-fast_tls|2016-11-11|Project was renamed mail/trojita-qt4|mail/trojita|2016-11-13|Qt4 support was dropped, use mail/trojita instead devel/extra-cmake-modules|devel/kf5-extra-cmake-modules|2016-11-14|Renamed to match other KF5 port net/vnc||2016-11-14|Has expired: Distfiles no longer available sysutils/gosa||2016-11-20|Has expired: this version of gosa cannot be fixed (requires PHP < 5.4) security/krb5-112||2016-11-20|Has expired: EOL twelve months after release of krb5-1.14 astro/osmium|astro/libosmium|2016-11-23|Rename according to upstream deskutils/xfce4-notification-daemon|deskutils/xfce4-notifyd|2016-11-23|Has expired: No longer supported by upstream, replaced with deskutils/xfce4-notifyd textproc/clucene-qt5||2016-11-25|Reintegrated into devel/qt5-help devel/go-shellwords||2016-11-26|Integrated into textproc/fzf build procedure www/gecko-sharp20||2016-11-27|Has expired: Broken, no upstream found and no release in 8 years net-mgmt/rancid|net-mgmt/rancid3|2016-11-27|Has expired: Not supported upstream. Please upgrade to net-mgmt/rancid3 x11-servers/mga_hal||2016-11-28|Support for MGA_HAL feature was removed from xf86-video-mga in 2011 audio/lv2core|audio/lv2|2016-11-30|Has expired: Superseded by audio/lv2 java/jakarta-struts||2016-12-01|Has expired: Port is unmaintained and has known security vulnerabilites www/rubygem-url-mount|www/rubygem-url_mount|2016-12-03|Rename to match our rubygem- port naming editors/focuswriter-qt4|editors/focuswriter|2016-12-03|Qt4 support was dropped, use editors/focuswriter instead graphics/gtkdps||2016-12-04|Has expired: No more upstream. Not used in the ports tree security/gsfv||2016-12-04|Has expired: No more upstream misc/grun||2016-12-04|Has expired: No more upstream www/node7|www/node|2016-12-07|www/node is now www/node7 databases/py-sqlalchemy06|databases/py-sqlalchemy10|2016-12-08|Has expired: Upstream has declared this version EoL: please migrate to databases/py-sqlalchemy10 print/py-reportlab2|print/py-reportlab|2016-12-08|Has expired: no longer supported - use reportlab 3.x (py-reportlab) instead devel/py-itools||2016-12-08|Has expired: Depends on broken and expired py-reportlab2 graphics/py-aafigure||2016-12-08|Has expired: Depends on broken and expired py-reportlab2 converters/py-pisa||2016-12-08|Has expired: Deprecated upstream, depends on broken and expired py-reportlab2 graphics/ocrfeeder||2016-12-08|Has expired: Depends on broken and expired py-reportlab2 devel/libcppformat|devel/libfmt|2016-12-08|Project was renamed databases/py35-mysqlclient|databases/py3-mysqlclient|2016-12-10|Moved to match existing naming convention databases/py35-psycopg2|databases/py3-psycopg2|2016-12-10|Moved to match existing naming convention www/linux-f10-flashplugin11|www/linux-flashplayer|2016-12-13|Removed upstream www/linux-c6-flashplugin11|www/linux-flashplayer|2016-12-13|Removed upstream www/linux-c7-flashplugin11|www/linux-flashplayer|2016-12-13|Removed upstream net/py-ceilometerclient|net/py-python-ceilometerclient|2016-12-17|Rename to match pypi name net/py-cinderclient|net/py-python-cinderclient|2016-12-17|Rename to match pypi name net/py-designateclient|net/py-python-designateclient|2016-12-17|Rename to match pypi name net/py-glanceclient|net/py-python-glanceclient|2016-12-17|Rename to match pypi name net/py-heatclient|net/py-python-heatclient|2016-12-17|Rename to match pypi name net/py-keystoneclient|net/py-python-keystoneclient|2016-12-17|Rename to match pypi name net/py-neutronclient|net/py-python-neutronclient|2016-12-17|Rename to match pypi name net/py-novaclient|net/py-python-novaclient|2016-12-17|Rename to match pypi name net/py-openstackclient|net/py-python-openstackclient|2016-12-17|Rename to match pypi name www/py-django-openstack-auth|www/py-django_openstack_auth|2016-12-18|Rename to match pypi name www/linux-c6-flashplugin24|www/linux-flashplayer|2016-12-18|Renamed to match upstream www/linux-c7-flashplugin24|www/linux-flashplayer|2016-12-18|Renamed to match upstream biology/p5-bioperl|biology/p5-BioPerl|2016-12-18|Rename to match upstream naming biology/p5-bioperl-run|biology/p5-BioPerl-Run|2016-12-18|Rename to match upstream naming databases/py-swiftclient|databases/py-python-swiftclient|2016-12-18|Rename to match pypi name x11-toolkits/py-kiwi|x11-toolkits/py-kiwi-gtk|2016-12-24|Rename to match PyPI naming www/py33-requests|www/py3-requests|2016-12-26|No need for 4 versions of py-requests www/py34-requests|www/py3-requests|2016-12-26|No need for 4 versions of py-requests www/py35-requests|www/py3-requests|2016-12-26|No need for 4 versions of py-requests net-mgmt/ccnet|net-mgmt/ccnet-client|2016-12-26|Split into -client and -server parts net-mgmt/seafile|net-mgmt/seafile-client|2016-12-26|Split into -client and -server parts comms/libcodec2|audio/codec2|2016-12-26|Removed: Duplicate port use `audio/codec2` instead databases/py-sqlalchemy07|databases/py-sqlalchemy10|2016-12-27|Has expired: Upstream has declared this version EoL: please migrate to databases/py-sqlalchemy10 security/openvpn-polarssl|security/openvpn-mbedtls|2016-12-27|Slave port renamed to match the TLS library's new name www/p5-ParallelUA|www/p5-ParallelUserAgent|2016-12-31|Rename to match upstream naming lang/perl5.18||2016-12-31|Has expired: Unsupported, please upgrade to a more recent version of Perl audio/linux-f10-sdl_mixer||2016-12-31|Removed audio/linux-f10-pulseaudio-libs||2016-12-31|Removed audio/linux-f10-freealut||2016-12-31|Removed audio/linux-f10-arts||2016-12-31|Removed audio/linux-f10-esound||2016-12-31|Removed audio/linux-f10-libogg||2016-12-31|Removed audio/linux-f10-alsa-plugins-oss||2016-12-31|Removed audio/linux-f10-openal||2016-12-31|Removed audio/linux-f10-openal-soft||2016-12-31|Removed audio/linux-f10-nas-libs||2016-12-31|Removed audio/linux-f10-alsa-lib||2016-12-31|Removed audio/linux-f10-libvorbis||2016-12-31|Removed audio/linux-f10-libaudiofile||2016-12-31|Removed audio/linux-f10-mikmod||2016-12-31|Removed databases/linux-f10-sqlite3||2016-12-31|Removed devel/linux-f10-dbus-glib||2016-12-31|Removed devel/linux-f10-sdl12||2016-12-31|Removed devel/linux-f10-libglade2||2016-12-31|Removed devel/linux-f10-devtools||2016-12-31|Removed devel/linux-f10-allegro||2016-12-31|Removed devel/linux-f10-nspr||2016-12-31|Removed devel/linux-f10-dbus-libs||2016-12-31|Removed devel/linux-f10-libsigc++20||2016-12-31|Removed devel/linux-f10-ncurses-base||2016-12-31|Removed dns/linux-f10-libasyncns||2016-12-31|Removed emulators/linux_base-f10||2016-12-31|Removed emulators/linux-f10||2016-12-31|Removed ftp/linux-f10-curl||2016-12-31|Removed games/dsnake||2016-12-31|Removed graphics/linux-f10-sdl_image||2016-12-31|Removed graphics/linux-f10-sdl_ttf||2016-12-31|Removed graphics/linux-f10-glew||2016-12-31|Removed graphics/linux-f10-ungif||2016-12-31|Removed graphics/linux-f10-png||2016-12-31|Removed graphics/linux-f10-tiff||2016-12-31|Removed graphics/linux-f10-dri||2016-12-31|Removed graphics/linux-f10-jpeg||2016-12-31|Removed graphics/linux-f10-libGLU||2016-12-31|Removed graphics/linux-f10-gdk-pixbuf||2016-12-31|Removed graphics/linux-f10-libmng||2016-12-31|Removed graphics/linux-f10-cairo||2016-12-31|Removed graphics/linux-f10-imlib||2016-12-31|Removed lang/linux-f10-tcl85||2016-12-31|Removed lang/linux-f10-libg2c||2016-12-31|Removed multimedia/linux-f10-libtheora||2016-12-31|Removed multimedia/linux-f10-libv4l||2016-12-31|Removed net/linux-f10-openldap||2016-12-31|Removed net/linux-f10-nss_ldap||2016-12-31|Removed print/linux-f10-cups-libs||2016-12-31|Removed security/linux-f10-gnutls||2016-12-31|Removed security/linux-f10-nss||2016-12-31|Removed security/linux-f10-openssl||2016-12-31|Removed security/linux-f10-libgpg-error||2016-12-31|Removed security/linux-f10-libtasn1||2016-12-31|Removed security/linux-f10-libgcrypt||2016-12-31|Removed security/linux-f10-libssh2||2016-12-31|Removed security/linux-f10-cyrus-sasl2||2016-12-31|Removed sysutils/linux-f10-procps||2016-12-31|Removed textproc/linux-f10-aspell||2016-12-31|Removed textproc/linux-f10-expat||2016-12-31|Removed textproc/linux-f10-scim-gtk||2016-12-31|Removed textproc/linux-f10-scim-libs||2016-12-31|Removed textproc/linux-f10-libxml2||2016-12-31|Removed x11/linux-f10-xorg-libs||2016-12-31|Removed x11-fonts/linux-f10-fontconfig||2016-12-31|Removed x11-themes/linux-f10-qtcurve-gtk2||2016-12-31|Removed x11-themes/linux-f10-hicolor-icon-theme||2016-12-31|Removed x11-toolkits/linux-f10-qt45||2016-12-31|Removed x11-toolkits/linux-f10-gtk2||2016-12-31|Removed x11-toolkits/linux-f10-openmotif||2016-12-31|Removed x11-toolkits/linux-f10-pango||2016-12-31|Removed accessibility/linux-f10-atk||2016-12-31|Removed archivers/linux-f10-ucl||2016-12-31|Removed archivers/linux-f10-upx||2016-12-31|Removed devel/rubygem-devise-async-rails4||2016-12-31|Has expired: Not compatible with devel/rubygem-devise > 3 devel/rubygem-devise-async||2016-12-31|Has expired: Not compatible with devel/rubygem-devise > 3 net/iet||2016-12-31|Has expired: Upstream no longer active sysutils/geomgui||2016-12-31|Has expired: Development stopped years ago sysutils/screen-legacy||2016-12-31|Has expired: Old version released 2008-08-07 no longer upline maintained sysutils/ntfsprogs|sysutils/fusefs-ntfs|2016-12-31|Has expired: Superseded by sysutils/fusefs-ntfs www/rubygem-jekyll2|www/rubygem-jekyll|2016-12-31|Has expired: Use www/rubygem-jekyll instead databases/rubygem-dm-devise||2016-12-31|Has expired: Not compatible with devel/rubygem-devise > 3 devel/rubygem-sprockets211||2016-12-31|Has expired: Use devel/rubygem-sprockets or devel/rubygem-sprockets3 instead devel/p5-Parse-CPAN-Meta||2016-12-31|Has expired: Merged into devel/p5-CPAN-Meta 2.150008 devel/jtag|devel/urjtag|2016-12-31|Has expired: development ceased in 2003, superseded by devel/urjtag x11-toolkits/linux-f10-tk85||2016-12-31|Removed x11-toolkits/linux-f10-blt||2016-12-31|Removed net-mgmt/unifi4|net-mgmt/unifi5|2017-01-01|Has expired: EoL as of 2017-01-01 net/py-simplesoap|net/py-pysimplesoap|2017-01-01|Rename to match upstream naming textproc/docdiff|textproc/rubygem-docdiff|2017-01-02|Rename to match our rubygem- port naming databases/rubygem-dm-rails||2017-01-07|Has expired: Depends on deprecated www/rubygem-actionpack databases/rubygem-activerecord||2017-01-07|Has expired: Upstream support ended devel/rubygem-activesupport||2017-01-07|Has expired: Upstream support ended devel/rubygem-tzinfo03|devel/rubygem-tzinfo|2017-01-07|Has expired: Use devel/rubygem-tzinfo instead devel/rubygem-sprockets22|devel/rubygem-sprockets3|2017-01-07|Has expired: Use devel/rubygem-sprockets or devel/rubygem-sprockets3 instead devel/rubygem-prototype-rails||2017-01-07|Has expired: Depends on deprecated www/rubygem-rails devel/rubygem-rubigen||2017-01-07|Has expired: Depends on deprecated devel/rubygem-activesupport devel/rubygem-coffee-rails||2017-01-07|Has expired: Depends on deprecated www/rubygem-railties japanese/rubygem-jpmobile||2017-01-07|Has expired: Depends on deprecated rubygem-rails mail/rubygem-actionmailer||2017-01-07|Has expired: Upstream support ended mail/rubygem-mail25|mail/rubygem-mail|2017-01-07|Has expired: Use mail/rubygem-mail instead security/dradis||2017-01-07|Has expired: Depends on deprecated www/rubygem-rails textproc/rubygem-sass-rails||2017-01-07|Has expired: Depends on deprecated www/rubygem-railties www/rubygem-rails||2017-01-07|Has expired: Upstream support ended www/rubygem-activeresource||2017-01-07|Has expired: Upstream support ended www/rubygem-responders-rails3||2017-01-07|Has expired: Depends on deprecated www/rubygem-railties www/rubygem-jquery-ui-rails||2017-01-07|Has expired: Depends on deprecated www/rubygem-railties www/rubygem-haml-rails||2017-01-07|Has expired: Depends on deprecated www/rubygem-actionpack www/rubygem-railties||2017-01-07|Has expired: Upstream support ended www/rubygem-actionpack||2017-01-07|Has expired: Upstream support ended databases/rubygem-rubyrep||2017-01-07|Has expired: Depends on deprecated databases/rubygem-activerecord databases/rubygem-activerecord-mysql-adapter||2017-01-07|Has expired: Depends on deprecated databases/rubygem-activerecord databases/rubygem-dm-active_model||2017-01-07|Has expired: Depends on deprecated databases/rubygem-activemodel databases/rubygem-activemodel||2017-01-07|Has expired: Upstream support ended math/libproj4|math/proj.4|2017-01-07|Project was renamed math/proj.4||2017-01-07|math/libproj4 was already duplicated as graphics/proj devel/rubygem-actionview|devel/rubygem-actionview4|2017-01-08|Rename to match our Rails ports naming devel/rubygem-rdoc3|devel/rubygem-rdoc|2017-01-08|Has expired: Older version no longer required devel/rubygem-activejob|devel/rubygem-activejob4|2017-01-08|Rename to match our Rails ports naming www/httpie|www/py-httpie|2017-01-09|Renamed to match upstream (PyPI) name sysutils/istatd|sysutils/istatserver|2017-01-09|Project was renamed devel/py-gflags|devel/py-python-gflags|2017-01-10|Rename to match PyPI naming java/wildfly100|java/wildfly10|2017-01-10|Remove minor version number from port name net/cyphesis||2017-01-15|Has expired: Does not compile on FreeBSD 10+ net/gpxe||2017-01-15|Has expired: does not build on FreeBSD 10.x and later net/openospfd||2017-01-15|Has expired: requires old CARP implementation (interface layer) security/openbsm-devel||2017-01-15|Has expired: is not needed under FreeBSD 10.x or higher security/ssh-copy-id||2017-01-15|Has expired: is already in the base system sysutils/apt||2017-01-15|Has expired: does not build on 10+ archivers/tclmkziplib||2017-01-15|Has expired: Abandonware, please use bundled zlib package [http://tcl.tk/man/tcl8.6/TclCmd/zlib.htm] x11-drivers/drm-kmod||2017-01-15|Has expired: this port is only for 9.3 systems audio/xmms-openspc||2017-01-15|Has expired: does not build on FreeBSD 10.x and later audio/aureal-kmod||2017-01-15|Has expired: does not build (and fetch) emulators/doscmd||2017-01-15|Has expired: does not build (accesses field of opaque structure) sysutils/fusefs-kmod||2017-01-15|Has expired: integrated into base textproc/aiksaurus-gtk||2017-01-15|Has expired: does not link against GTK2 on FreeBSD 10+ net/rwhoisd||2017-01-22|Has expired: No more public distfiles devel/bunny||2017-01-22|Has expired: Superseded by a different project www/pligg||2017-01-22|Has expired: Abandonware x11-drivers/xf86-video-fbdev||2017-01-22|Linux only driver net/librsync1|net/librsync2|2017-01-24|Port renamed to librsync2 databases/ruby-rdbc1||2017-01-28|Has expired: Upstream no longer active databases/ruby-sybct||2017-01-28|Has expired: Upstream no longer active databases/ruby-o_dbm||2017-01-28|Has expired: Upstream no longer active databases/ruby-cdb||2017-01-28|Has expired: Upstream no longer active devel/ruby-rbison||2017-01-28|Has expired: Does not work on modern ruby devel/ruby-property||2017-01-28|Has expired: Upstream no longer exists devel/ruby-dialogs||2017-01-28|Has expired: Upstream no longer active devel/ruby-byaccr||2017-01-28|Has expired: Upstream no longer active devel/ruby-aspectr|devel/rubygem-aspectr|2017-01-28|Has expired: Use rubygem-aspectr instead devel/ruby-locale||2017-01-28|Has expired: No longer useful devel/ruby-wirble||2017-01-28|Has expired: Upstream no longer active devel/ruby-tzfile||2017-01-28|Has expired: Upstream no longer exists devel/ruby-rreadline||2017-01-28|Has expired: Upstream no longer exists devel/ruby-intl|devel/rubygem-gettext|2017-01-28|Has expired: Use devel/rubygem-gettext instead graphics/ruby-imlib2||2017-01-28|Has expired: Upstream no longer active graphics/ruby-image_size||2017-01-28|Has expired: Upstream no longer active graphics/ruby-svg|graphics/rubygem-rsvg2|2017-01-28|Has expired: Use graphics/rubygem-rsvg2 instead irc/ruby-rice||2017-01-28|Has expired: Upstream no longer active irc/ruby-rica||2017-01-28|Has expired: Upstream no longer active irc/ruby-irc||2017-01-28|Has expired: Upstream no longer active japanese/ruby-usersguide||2017-01-28|Has expired: Does not exist upstream japanese/ruby-mecab||2017-01-28|Has expired: Upstream no longer active mail/ruby-rmail||2017-01-28|Has expired: Upstream no longer active mail/ruby-rfilter||2017-01-28|Has expired: Upstream no longer active math/ruby-algebra|math/rubygem-algebra|2017-01-28|Has expired: Use rubygem-algebra instead net/ruby-tserver||2017-01-28|Has expired: Upstream no longer active net/ruby-tcpsocketpipe||2017-01-28|Has expired: Upstream no longer active net/ruby-icmp||2017-01-28|Has expired: Upstream no longer active net/ruby-dict||2017-01-28|Has expired: Upstream no longer active palm/palmos-sdk||2017-01-28|Has expired: Upstream no longer exists security/ruby-hmac|security/rubygem-ruby-hmac|2017-01-28|Has expired: Use www/rubygem-ruby-hmac instead security/ruby-tcpwrap||2017-01-28|Has expired: Upstream no longer active security/ruby-password||2017-01-28|Has expired: Upstream no longer active sysutils/ruby-quota||2017-01-28|Has expired: Upstream no longer active textproc/ruby-rss.alt||2017-01-28|Has expired: Upstream no longer active textproc/ruby-rss||2017-01-28|Has expired: Upstream no longer exists textproc/ruby-htmlrepair||2017-01-28|Has expired: Upstream no longer exists textproc/ruby-xmlscan||2017-01-28|Has expired: Upstream no longer active textproc/ruby-xml-configfile||2017-01-28|Has expired: Upstream no longer exists textproc/ruby-htmlsplit||2017-01-28|Has expired: Upstream no longer exists www/ruby-google||2017-01-28|Has expired: Upstream no longer active archivers/ruby-lha||2017-01-28|Has expired: Upstream no longer active x11/ruby-X11||2017-01-28|Has expired: Upstream no longer active audio/ruby-audiofile||2017-01-28|Has expired: Broken on modern versions of Ruby audio/ruby-mp3tag||2017-01-28|Has expired: Upstream no longer active converters/ruby-dump.rb||2017-01-28|Has expired: Upstream no longer active x11-servers/wayland|graphics/wayland|2017-01-30|Better location for wayland graphics/hsetroot|x11/hsetroot|2017-01-31|Moved to a better category x11-themes/linux-c6-hicolor-icon-theme||2017-01-31|Merged into linux_base port x11-themes/linux-c7-hicolor-icon-theme||2017-01-31|Merged into linux_base port x11-themes/linux-hicolor-icon-theme||2017-01-31|Merged into linux_base port audio/linux-c6-arts||2017-01-31|Old KDE3 component audio/linux-c6-esound||2017-01-31|Old sound daemon audio/linux-c7-esound||2017-01-31|Old sound daemon security/linux-c6-openssl-compat||2017-01-31|Old OpenSSL security/linux-c7-openssl-compat||2017-01-31|Old OpenSSL databases/rubygem-arel3|databases/rubygem-arel|2017-01-31|Has expired: Use devel/rubygem-arel or devel/rubygem-arel6 instead databases/rubygem-arel5|databases/rubygem-arel|2017-01-31|Has expired: Use devel/rubygem-arel or devel/rubygem-arel6 instead www/tinymce3|www/tinymce|2017-01-31|Has expired: Use www/tinymce instead devel/p5-IO-Detect|devel/p5-Scalar-Does|2017-01-31|Has expired: Use devel/p5-Scalar-Does instead devel/pear-PHPUnit3|devel/phpunit|2017-01-31|Has expired: Deprecated by upstream, use devel/phpunit instead devel/rubygem-bio|biology/rubygem-bio|2017-02-05|Move to a better place devel/libcheck|devel/check|2017-02-05|Rename to match upstream naming devel/p5-JIRA-Client||2017-02-05|Has expired: Deprecated by upstream due to deprecated JIRA's SOAP API sysutils/puppet37||2017-02-05|Has expired: Upstream support ended, see http://tinyurl.com/puppet3eol net-im/ttytter||2017-02-05|Has expired: Upstream no longer active, see net-im/oysttyer java/jboss7||2017-02-07|Has expired: Unsupported, replaced by wildfly java/jboss71||2017-02-07|Has expired: Unsupported, replaced by wildfly java/jboss72||2017-02-07|Has expired: Unsupported, replaced by wildfly misc/teslams||2017-02-08|Has expired: Broken for more than 6 months devel/libdict||2017-02-08|Has expired: Broken for more than 6 months math/R-cran-SuppDists||2017-02-08|Has expired: Broken for more than 6 months devel/py-re2||2017-02-08|Has expired: Broken for more than 6 months net-p2p/digitalcoin||2017-02-08|Has expired: Broken for more than 6 months textproc/rubygem-mustache|devel/rubygem-mustache|2017-02-08|Duplicate of devel/rubygem-mustache devel/php70-APCu|devel/pecl-APCu|2017-02-12|Use devel/pecl-APCu for PHP 7.0+ users chinese/mutt|mail/mutt|2017-02-13|Use mail/mutt, which can handle Chinese locales lang/libjit||2017-02-14|Has expired: This version is severely out of date and its use is discouraged; see http://www.gnu.org/software/libjit/ databases/php56-redis|databases/pecl-redis|2017-02-15|Merged with latest codebase that supports all php versions databases/php70-redis|databases/pecl-redis|2017-02-15|Merged with latest codebase that supports all php versions databases/php71-redis|databases/pecl-redis|2017-02-15|Merged with latest codebase that supports all php versions devel/dbus-qt4|devel/qt4-dbus|2017-02-18|Renamed to match other Qt ports devel/dbus-qt5|devel/qt5-dbus|2017-02-18|Renamed to match other Qt ports devel/qmake4|devel/qt4-qmake|2017-02-18|Renamed to match other Qt ports devel/qmake5|devel/qt5-qmake|2017-02-18|Renamed to match other Qt ports textproc/clucene-qt4|textproc/qt4-clucene|2017-02-18|Renamed to match other Qt ports www/webkit-qt4|www/qt4-webkit|2017-02-18|Renamed to match other Qt ports www/webkit-qt5|www/qt5-webkit|2017-02-18|Renamed to match other Qt ports www/rt40|www/rt44|2017-02-18|Has expired: Upstream support EoL, please migrate to rt44 devel/m6811-binutils||2017-02-18|Has expired: multiple vulnerabilities, version is years behind upstream devel/libevent2|devel/libevent|2017-02-20|Rename as only libevent 2.x is supported german/mediathek|german/mediathekview|2017-02-20|Project renamed net/nos-ttb||2017-02-20|Has expired: does not work due to protocol changes sysutils/filebeat|sysutils/beats|2017-02-21|merged beats to one port sysutils/metricbeat|sysutils/beats|2017-02-21|merged beats to one port sysutils/packetbeat|sysutils/beats|2017-02-21|merged beats to one port devel/libc++||2017-02-24|Obsolete, all supported FreeBSD versions have libc++ in the base system devel/libcxxrt||2017-02-24|Obsolete, all supported FreeBSD versions have libcxxrt in the base system devel/linux_kdump||2017-02-26|Broken and obsolete textproc/rubygem-nokogiri14|textproc/rubygem-nokogiri|2017-02-28|Has expired: Use textproc/rubygem-nokogiri instead textproc/rubygem-liquid2|textproc/rubygem-liquid|2017-02-28|Has expired: Use textproc/rubygem-liquid instead www/rubygem-rack14||2017-02-28|Has expired: Use www/rubygem-rack or www/rubygem-rack16 instead www/rubygem-mechanize26|www/rubygem-mechanize|2017-02-28|Has expired: Use www/rubygem-mechanize instead www/rubygem-net-http-persistent25|www/rubygem-net-http-persistent2|2017-02-28|Has expired: Use www/rubygem-net-http-persistent2 instead devel/rubygem-builder32|devel/rubygem-builder|2017-02-28|Has expired: Use devel/rubygem-builder instead www/rubygem-net-http-digest_auth11|www/rubygem-net-http-digest_auth|2017-02-28|Has expired: Use www/rubygem-net-http-digest_auth instead devel/rubygem-bson1|devel/rubygem-bson|2017-02-28|Has expired: Use devel/rubygem-bson instead devel/rubygem-minitest4|devel/rubygem-minitest|2017-02-28|Has expired: Use devel/rubygem-minitest instead java/jdk16-doc||2017-02-28|Has expired: Should have been removed with linux-sun-jdk16 (2014-05-11) java/jdk7-doc||2017-02-28|Has expired: Should have been removed with linux-sun-jdk17 (2016-04-24) textproc/rubygem-sass-rails4|textproc/rubygem-sass-rails5|2017-02-28|Has expired: Use textproc/rubygem-sass-rails5 instead x11-toolkits/p5-Gtk|x11-toolkits/p5-Gtk-Perl|2017-02-28|Rename to match upstream naming japanese/ruby-eb||2017-03-01|Has expired: Upstream no longer active japanese/xyaku||2017-03-01|Has expired: Unmaintained, depends on expired japanese/ruby-eb archivers/libunrar4||2017-03-01|Has expired: Outdated version. Please use archivers/libunrar5 instead sysutils/xacpim||2017-03-01|Has expired: Mastersite disappeared sysutils/linux-nero||2017-03-01|Has expired: Probably cannot actually burn CD/DVD on recent FreeBSD audio/libofa||2017-03-01|Has expired: MusicDNS service has been discontinued emulators/hyperv-is||2017-03-03|Has expired: does not support any actual FreeBSD release devel/py-mez_xml||2017-03-03|Has expired: Was only needed for deprecated www/py-GinGin www/py-GinGin||2017-03-03|Has expired: Upstream disappeared, last release from 2009 www/py-scriptaculous||2017-03-03|Has expired: Development of this branch ceased devel/py-Jinja|devel/py-Jinja2|2017-03-03|Has expired: Development of this branch ceased. Use devel/py-Jinja2 instead mail/py-turbomail||2017-03-03|Has expired: Development of this branch ceased www/py-turbogears|www/py-turbogears2|2017-03-03|Has expired: Development of this branch ceased. Use www/py-turbogears2 devel/py-turbojson||2017-03-03|Has expired: Development of this branch ceased devel/py-TurboJinja||2017-03-03|Has expired: Development of this branch ceased devel/py-TGScheduler||2017-03-03|Has expired: Development of this branch ceased devel/py-turbokid||2017-03-03|Has expired: Development of this branch ceased www/py-tgwebservices||2017-03-03|Has expired: Development of this branch ceased devel/py-turbojson11||2017-03-03|Has expired: Development of this branch ceased devel/py-turbocheetah||2017-03-03|Has expired: Development of this branch ceased devel/py-tgMochiKit||2017-03-03|Has expired: Development of this branch ceased www/py-Lightbox||2017-03-03|Has expired: Development of this branch ceased devel/py-ll-core||2017-03-04|Has expired: Long unmaintained, abandoned upstream net/tcpdump398|net/tcpdump|2017-03-05|Has expired: multiple security vulnerabilities; not updated since 2009 databases/oracle7-client||2017-03-07|Has expired: Oracle 7 EOL by 13 years databases/yasql||2017-03-07|Has expired: Dependent on deprecated oracle7-client databases/jdbc-oracle10g||2017-03-07|Has expired: Oracle 10g EOL almost 4 years databases/jdbc-oracle8i||2017-03-07|Has expired: Oracle8i unsupported and unavailable; fetch site redirects databases/jdbc-oracle9i||2017-03-07|Has expired: Oracle 9i is no more supported x11/rsibreak-kde4|x11/rsibreak|2017-03-11|Renamed to drop the -kde4 suffix textproc/ack|textproc/p5-ack|2017-03-12|Rename to match our perl naming misc/p5-Geo-Coder-Geocoder-US||2017-03-12|Has expired: http://geocoder.us/ disappeared in late 2015 databases/py-sqlalchemy09|databases/py-sqlalchemy10|2017-03-12|Has expired: Upstream has declared this version EoL: please migrate to databases/py-sqlalchemy10 lang/OpenCoarrays|lang/opencoarrays|2017-03-12|Rename to lower case devel/avr-gcc-devel||2017-03-13|Has expired: There's no longer a point to have both, a -devel and a regular port of GCC for the AVR net/py-pysimplesoap|net/py-soap2py|2017-03-13|Rename to match upstream naming games/trigger-data|games/trigger-rally|2017-03-15|Merged into games/trigger-rally devel/py-setuptools27|devel/py27-setuptools|2017-03-16|Renamed to better match other python ports devel/py-setuptools33|devel/py33-setuptools|2017-03-16|Renamed to better match other python ports devel/py-setuptools34|devel/py34-setuptools|2017-03-16|Renamed to better match other python ports devel/py-setuptools35|devel/py35-setuptools|2017-03-16|Renamed to better match other python ports devel/py-setuptools36|devel/py36-setuptools|2017-03-16|Renamed to better match other python ports devel/rubygem-devise-rails4|devel/rubygem-devise|2017-03-16|Has expired: Please use devel/rubygem-devise instead textproc/rubygem-github-markdown||2017-03-16|Has expired: This gem is not maintained and not supported by upstream chinese/irssi|irc/irssi|2017-03-17|Use irc/irssi, which can handle Chinese locales archivers/macutils||2017-03-19|Has expired: Not maintained in 16 years, many missing header inclusions www/npm012|www/npm|2017-03-20|Has expired: Depends on deprecated www/node012. Please use www/npm instead sysutils/ucspi-ssl-tls|sysutils/ucspi-ssl|2017-03-20|Current ucspi-ssl supports TLS net/rubygem-signet|security/rubygem-signet|2017-03-20|Duplicate www/node012|www/node|2017-03-21|Has expired: Upstream has placed 0.12.x in maintenance mode, see https://github.com/nodejs/LTS net/samba-libsmbclient|net/samba43|2017-03-21|Obsolete net/samba-nmblookup|net/samba43|2017-03-21|Obsolete net/samba-smbclient|net/samba43|2017-03-21|Obsolete net/samba36|net/samba43|2017-03-21|Obsolete multimedia/mplayer2|multimedia/mpv|2017-03-25|Has expired: Development ceased in favour of mpv, last release from 2013 devel/buildbot-slave|devel/buildbot-worker|2017-03-27|Renamed to match new upstream package name/terminology print/musixtex||2017-03-27|Has expired: Broken for more than 6 months www/wml||2017-03-27|Has expired: Broken for more than 6 months www/offline-npm||2017-03-27|Has expired: Broken for more than 6 months x11-themes/kde-icons-cezanne||2017-03-27|Has expired: Broken for more than 6 months x11-themes/kde-icons-sky||2017-03-27|Has expired: Broken for more than 6 months deskutils/gnome-shell-extension-backslide||2017-03-27|Has expired: Broken for more than 6 months devel/openvex||2017-03-27|Has expired: Broken for more than 6 months mail/mixmaster||2017-03-27|Has expired: Broken for more than 6 months net-mgmt/nat||2017-03-27|Has expired: Broken for more than 6 months net-p2p/gnunet-gtk||2017-03-27|Has expired: Depends on expiring net-p2p/gnunet net-p2p/gnunet||2017-03-27|Has expired: Broken for more than 6 months print/abc2mtex||2017-03-27|Has expired: Depends on expiring print/musixtex ftp/bareftp||2017-03-27|Has expired: Broken for more than 6 months www/rubygem-jquery-rails4|www/rubygem-jquery-rails|2017-03-27|Remove PKGNAMESUFFIX devel/libytnef|converters/ytnef|2017-03-29|Merged into converters/ytnef databases/py-sqlalchemy08|databases/py-sqlalchemy10|2017-03-29|Has expired: Upstream has declared this version EoL: please migrate to databases/py-sqlalchemy10 devel/py3-meson||2017-03-30|Removed deskutils/kchmviewer-kde4|deskutils/kchmviewer|2017-03-31|Renamed to drop the -kde4 suffix emulators/ppsspp-qt4|emulators/ppsspp-qt5|2017-03-31|Qt4 support was removed upstream devel/arduino16|devel/arduino18|2017-03-31|Renamed to match major version following upgrade devel/llvm37||2017-04-01|Obsolete and unmaintained upstream lang/clang37||2017-04-01|Obsolete and unmaintained upstream devel/lldb37||2017-04-01|Obsolete and unmaintained upstream audio/gnome-media||2017-04-01|Obsolete and not depend on anymore audio/gnome-audio||2017-04-01|Obsolete and not depend on anymore accessibility/gnome-mag||2017-04-01|Obsolete and not depend on anymore accessibility/gnome-speech||2017-04-01|Obsolete and not depend on anymore accessibility/gok||2017-04-01|Obsolete and not depend on anymore accessibility/dasher||2017-04-01|Obsolete and not depend on anymore accessibility/java-access-bridge||2017-04-01|Obsolete and not depend on anymore accessibility/at-spi||2017-04-01|Obsolete and not depend on anymore accessibility/at-spi-reference||2017-04-01|Obsolete and not depend on anymore deskutils/gnome-blog||2017-04-01|Obsolete and not depend on anymore deskutils/gnome-epub-thumbnailer||2017-04-01|Obsolete and not depend on anymore databases/libgdamm||2017-04-01|Obsolete and not depend on anymore databases/libgda4-bdb||2017-04-02|Obsolete and not depend on anymore databases/libgda4-reference||2017-04-02|Obsolete and not depend on anymore databases/libgda4-postgresql||2017-04-02|Obsolete and not depend on anymore databases/libgda4||2017-04-02|Obsolete and not depend on anymore databases/libgda4-jdbc||2017-04-02|Obsolete and not depend on anymore databases/libgda4-mysql||2017-04-02|Obsolete and not depend on anymore databases/libgda4-mdb||2017-04-02|Obsolete and not depend on anymore databases/libgda4-ldap||2017-04-02|Obsolete and not depend on anymore devel/libsigcx||2017-04-02|Obsolete and not depend on anymore x11-toolkits/gal2||2017-04-02|Obsolete and not depend on anymore x11-toolkits/gal2-reference||2017-04-02|Obsolete and not depend on anymore x11-toolkits/vte290|x11-toolkits/vte3|2017-04-02|Obsolete and not depend on anymore x11-toolkits/libgtksourceviewmm||2017-04-03|Obsolete and not depend on anymore graphics/goocanvasmm||2017-04-03|Obsolete and not depend on anymore x11-themes/kde4-icons-oxygen|x11-themes/kf5-oxygen-icons5|2017-04-03|Replaced by x11-themes/kf5-oxygen-icons5 devel/php5-geshi|devel/php-geshi|2017-04-04|Update PKGNAMEPREFIX: it builds fine with PHP 7.x databases/p5-Search-Xapian|databases/p5-Search-Xapian12|2017-04-04|Rename to match Xapian PKGNAMESUFFIX archivers/pecl-snappy|archivers/php-snappy|2017-04-04|Update PKGNAMEPREFIX: it builds fine with PHP 7.x textproc/kibana50|textproc/kibana5|2017-04-05|Rename port to match the rest of the 5.X line of the elastic stack textproc/kibana50-x-pack|textproc/kibana5-x-pack|2017-04-05|Rename port to match the rest of the 5.X line of the elastic stack www/typo3|www/typo3-8|2017-04-08|Rename to coexist with TYPO3 7.x (was typo3-lts) since both versions are LTS now www/typo3-lts|www/typo3-7|2017-04-08|Rename to coexist with TYPO3 8.x (was typo3) since both versions are LTS now sysutils/puppet38|sysutils/puppet4|2017-04-10|Has expired: Upstream support ended, see http://tinyurl.com/puppet3eol editors/libreoffice4|editors/libreoffice|2017-04-10|Has expired: Deprecated by upstream databases/rubygem-redis-actionpack4|databases/rubygem-redis-actionpack|2017-04-10|Has expired: Use databases/rubygem-redis-actionpack instead devel/rubygem-nio4r1|devel/rubygem-nio4r|2017-04-10|Has expired: Use devel/rubygem-nio4r instead devel/liborcus07|devel/liborcus|2017-04-10|Has expired: Deprecated by upstream, use devel/liborcus devel/mdds0|devel/mdds|2017-04-10|Has expired: Deprecated by upstream, use devel/mdds security/openvpn23-polarssl||2017-04-10|Has expired: Replaced by new upstream release 2.4.x security/openvpn23|security/openvpn|2017-04-10|Has expired: Replaced by new upstream release 2.4.x textproc/p5-XML-XSH||2017-04-10|Has expired: Deprecated by upstream www/rubygem-jquery-atwho-rails-rails4|www/rubygem-jquery-atwho-rails|2017-04-10|Has expired: Use www/rubygem-jquery-atwho-rails instead www/p5-Catalyst-Plugin-Singleton||2017-04-10|Has expired: Deprecated by upstream x11/lumina-i18n||2017-04-10|Has expired: Obsolete, i18n files included in x11/lumina sysutils/jail2||2017-04-10|Has expired: Starting with 10.0 functionality has been merged into base sysutils/iocage-devel||2017-04-10|Has expired: Outdated version. Please use sysutils/py-iocage instead databases/puppetdb||2017-04-10|Has expired: Depends on expired sysutils/puppet38, use puppetdb[34] instead databases/puppetdb-terminus||2017-04-10|Has expired: Depends on expired sysutils/puppet38, use puppetdb-terminus[34] databases/pglesslog||2017-04-10|Has expired: Does not build with recent PostgreSQL versions textproc/go-text||2017-04-10|Has expired: Go libraries should not be packaged devel/go-pretty||2017-04-10|Has expired: Go libraries should not be packaged databases/godis||2017-04-10|Has expired: Go libraries should not be packaged www/moodle29|www/moodle32|2017-04-10|Has expired: Upstream support EoL, please migrate to moodle32 audio/schism|audio/schismtracker|2017-04-12|Renamed for better naming graphics/opencv2|graphics/opencv|2017-04-14|Revert previous rename graphics/opencv2-core|graphics/opencv-core|2017-04-14|Revert previous rename graphics/opencv2-java|graphics/opencv-java|2017-04-14|Revert previous rename graphics/py-opencv2|graphics/py-opencv|2017-04-14|Revert previous rename databases/pgpool-II-22|databases/pgpool|2017-04-14|Has expired: Deprecated by upstream; use database/pgpool instead databases/pgpool-II-23|databases/pgpool|2017-04-14|Has expired: Deprecated by upstream; use database/pgpool instead net/py-matrix-synapse|net-im/py-matrix-synapse|2017-04-17|Move to net-im which is a more appropriate category graphics/shiva-collections||2017-04-17|Has expired: Project is dead and has no end user graphics/opengtl||2017-04-17|Has expired: Project is dead, has no end user, and relies on EOLed LLVM graphics/qtgtl||2017-04-17|Has expired: Project is dead and has had no consumer for over a year www/py-django16|www/py-django18|2017-04-19|Has expired: End of extended support: April 1, 2015 www/py-django16-tastypie|www/py-django-tastypie|2017-04-19|Removed, uses expired Django version www/py-django-pipeline13|www/py-django-pipeline|2017-04-19|Has expired: Depends on expired www/py-django16, and expired upstream www/py-djblets||2017-04-19|Has expired: Does not build with py-django18 see pr: 216758 security/py-crits||2017-04-19|Has expired: Does not build with py-django18 see pr: 216758 www/py-cactus||2017-04-19|Removed, depends on expired Django version devel/py-django16-tastypie-mongoengine|devel/py-django-tastypie-mongoengine|2017-04-19|Removed, uses expired Django version devel/freeocl|lang/pocl|2017-04-19|Has expired: Unfetchable for more than six months (google code has gone away); use lang/pocl instead net/librsync|net/librsync2|2017-04-28|Unmaintained, CVE-2014-8242, use net/librsync2 instead devel/stormlib-ghost++||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) devel/py-coil||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) devel/py-cmdln||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) devel/privman||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) devel/c-unit||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) devel/py-px||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) devel/nglogc||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) devel/bncsutil-ghost++||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) devel/liblouisxml||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) devel/nxt-python||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) devel/spdict||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) devel/guiloader-c++||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) devel/streamhtmlparser||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) devel/winpdb||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) net/opendpi||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) net/py-pybeanstalk||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) net-im/qwit||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) net-im/linux-instantbird||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) net-im/jabber-pyicq||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) net-im/qwit-devel||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) net-im/naim||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) net-im/pwytter||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) sysutils/sievelog||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) sysutils/ldapenter||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) sysutils/py-danzfs||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) sysutils/plasma-applet-apcups||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) sysutils/scanmem||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) sysutils/pdsh||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) deskutils/superswitcher||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) deskutils/plasma-applet-playwolf||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) deskutils/nagaina||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) deskutils/vboxgtk||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) deskutils/libgcal||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) math/carve||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) math/foma||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) math/libjbigi||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) multimedia/gcap||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) multimedia/freetuxtv||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) multimedia/bangarang||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) multimedia/opencinematools||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) multimedia/vstream-client||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) biology/treeviewx||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/pylot||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/xpi-pencil||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/mod_myvhost||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/feedonfeeds||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/mod_jail||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/jspacker||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/cocoon||2017-04-30|Has expired: Overly complex port with no maintainer since 2008, requires openjdk 1.6 www/mod_authz_unixgroup24||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/trac-down||2017-04-30|Has expired: Upstream is gone www/tengine||2017-04-30|Removed www/arora||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/py-postmarkup||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/py-dotcloud.cli||2017-04-30|Has expired: deprecated in upstream www/closure-linter||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/httpsqs||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/sventon||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/mod_authnz_external22||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/mod_authn_otp||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/php-plurk-api||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/py-django-app-plugins||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/mod_authz_unixgroup22||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/squidstats||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/mod_log_firstbyte||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/gaeo||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) www/xpi-pentadactyl||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) net-mgmt/py-flowtools||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) chinese/ydict||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) chinese/py-cconv||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) chinese/fqterm||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) chinese/libgooglepinyin||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) chinese/p5-cconv||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) chinese/fcitx-googlepinyin||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) chinese/php-cconv||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) databases/jdbm2||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) databases/akonadi-googledata||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) lang/ofc||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) comms/esmska||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) x11/keynav||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) x11/hotwire-shell||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) security/fuzzdb||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) security/truecrack||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) security/skipfish||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) security/py-yara-editor||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) security/nmapsi4||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) security/cmd5checkpw||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) net-p2p/unworkable||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) net-p2p/rtgui||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) audio/xpi-musicpm||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) audio/pidgin-musictracker||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) audio/logitechmediaserver-superdatetime||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) audio/last-cmus||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) audio/mehdiaplayer||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) japanese/nhocr||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) misc/xsw||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) dns/py-bonjour||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) games/robocalypto||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) games/libfov||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) games/dcross||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) games/lostfeathers||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) games/hexglass||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) textproc/chm2pdf||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) textproc/dtdinst||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) textproc/py-xmltv||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) textproc/libroxml||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) mail/gnome-gmail-notifier||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) irc/py-gozerbot||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) irc/tircd||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) graphics/qiviewer||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) graphics/py-gchartwrapper||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) graphics/svgfig||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) graphics/iulib||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) graphics/seam-carving-gui||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) graphics/py-pyggel||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) graphics/rubygem-gemojione2||2017-04-30|Has expired: Use graphics/rubygem-gemojione instead deskutils/epoch||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) graphics/ocropus||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) net/clamz||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) misc/terraform||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) net-mgmt/flow-tools-ng||2017-04-30|Has expired: Unfetchable for more than six months (google code has gone away) devel/llvm36||2017-05-02|Obsolete and unmaintained upstream lang/clang36||2017-05-02|Obsolete and unmaintained upstream lang/ruby21||2017-05-02|Has expired: Upstream support ended devel/guiloader||2017-05-05|Unfetchable for more than six months (google code has gone away) audio/ufmcontrol-i18n||2017-05-07|Unfetchable for more than six months (google code has gone away) devel/ccons||2017-05-07|Has expired: Unfetchable for more than six months (google code has gone away) chinese/fortune||2017-05-07|Has expired: Unfetchable for more than six months (google code has gone away) benchmarks/gobench||2017-05-07|Has expired: Builds each time it runs sysutils/grok||2017-05-07|Has expired: Unfetchable for more than six months (google code has gone away) audio/xaylet|audio/aylet|2017-05-07|Moved to a single port with GUI option graphics/dri|graphics/mesa-dri|2017-05-12|Renamed for clarity and consistency with graphics/mesa-libs graphics/gbm|graphics/mesa-libs|2017-05-12|Mesa libraries were merged into one port graphics/libglapi|graphics/mesa-libs|2017-05-12|Mesa libraries were merged into one port graphics/libglesv2|graphics/mesa-libs|2017-05-12|Mesa libraries were merged into one port graphics/libEGL|graphics/mesa-libs|2017-05-12|Mesa libraries were merged into one port graphics/libGL|graphics/mesa-libs|2017-05-12|Mesa libraries were merged into one port multimedia/rubygem-av-rails5||2017-05-15|Has expired: Use multimedia/rubygem-av instead devel/rubygem-cocaine-rails5||2017-05-15|Has expired: Use devel/rubygem-cocaine instead devel/rubygem-climate_control-rails5||2017-05-15|Has expired: Use devel/rubygem-climate_control instead net/py-twitter|net/py-python-twitter|2017-05-15|Renamed to reflect official name at PyPI/Github sysutils/bsdadminscripts|ports-mgmt/bsdadminscripts|2017-05-17|Move into more appropiate category games/ioquake3-devel|games/ioquake3|2017-05-18|GitHub master is the new release model games/ioquake3-devel-server|games/ioquake3-server|2017-05-18|GitHub master is the new release model devel/rubygem-generator_spec|devel/rubygem-generator_spec-rails5|2017-05-19|Use devel/rubygem-generator_spec-rails4 or devel/rubygem-generator_spec-rails5 deskutils/openproj|deskutils/projectlibre|2017-05-19|Has expired: Development ceased, superseded by deskutils/projectlibre net/go-madonctl|net/madonctl|2017-05-21|Remove go- prefix net-mgmt/zabbix24-agent||2017-05-29|Has expired: Upstream has declared this version EoL in 2016 (Q1) net-mgmt/zabbix24-frontend||2017-05-29|Has expired: Upstream has declared this version EoL in 2016 (Q1) net-mgmt/zabbix24-proxy||2017-05-29|Has expired: Upstream has declared this version EoL in 2016 (Q1) net-mgmt/zabbix24-server||2017-05-29|Has expired: Upstream has declared this version EoL in 2016 (Q1) net/py-cloudfiles|net/py-python-cloudfiles|2017-05-30|Rename to match PyPI naming irc/konversation-kde4|irc/konversation|2017-05-30|Renamed to irc/konversation net/py-python-swiftclient|databases/py-python-swiftclient|2017-05-31|Duplicate port lang/perl5.20|lang/perl5.24|2017-06-01|Support ends three years after .0 release, please upgrade to a more recent version of Perl misc/unicode-ucd|textproc/UCD|2017-06-02|unicode-ucd was a duplicate of textproc/UCD, remove the younger port print/gutenprint-base|print/gutenprint|2017-06-04|Folded into gutenprint port print/gutenprint-cups|print/gutenprint|2017-06-04|Folded into gutenprint port print/gutenprint-foomatic||2017-06-04|Component removed upstream print/gutenprint-ijs||2017-06-04|Component removed upstream devel/py-PyDispatcher|devel/py-pydispatcher|2017-06-05|Change name to lower case mail/linux-thunderbird||2017-06-07|Has expired: Use the native thunderbird mail/thunderbird instead devel/p5-Penguin||2017-06-07|Has expired: Depends on expired security/pgp security/p5-Crypt-PGPSimple||2017-06-07|Has expired: Depends on expired security/pgp mail/pgpsendmail||2017-06-07|Has expired: Depends on expired security/pgp security/pgp||2017-06-07|Has expired: This software was last updated in 1996, use security/gnupg1 as a drop-in replacement with legacy PGP support dns/pear-Net_DNS||2017-06-07|Has expired: This Port use PHP4.2 - This PHP-Version is not longer supporded net/samba42|net/samba44|2017-06-07|Has expired: not supported upstream https://wiki.samba.org/index.php/Samba_Release_Planning net/samba43|net/samba44|2017-06-07|Has expired: not supported upstream https://wiki.samba.org/index.php/Samba_Release_Planning www/py-utidy|www/py-utidylib|2017-06-08|Rename to comply with PyPI scheme chinese/calligra-l10n-zh_CN||2017-06-12|Merged with editors/calligra chinese/calligra-l10n-zh_TW||2017-06-12|Merged with editors/calligra french/calligra-l10n||2017-06-12|Merged with editors/calligra german/calligra-l10n||2017-06-12|Merged with editors/calligra hungarian/calligra-l10n||2017-06-12|Merged with editors/calligra japanese/calligra-l10n||2017-06-12|Merged with editors/calligra polish/calligra-l10n||2017-06-12|Merged with editors/calligra portuguese/calligra-l10n-pt_BR||2017-06-12|Merged with editors/calligra portuguese/calligra-l10n||2017-06-12|Merged with editors/calligra russian/calligra-l10n||2017-06-12|Merged with editors/calligra ukrainian/calligra-l10n||2017-06-12|Merged with editors/calligra editors/calligra-l10n-bs||2017-06-12|Merged with editors/calligra editors/calligra-l10n-ca||2017-06-12|Merged with editors/calligra editors/calligra-l10n-ca_valencia||2017-06-12|Merged with editors/calligra editors/calligra-l10n-cs||2017-06-12|Merged with editors/calligra editors/calligra-l10n-da||2017-06-12|Merged with editors/calligra editors/calligra-l10n-el||2017-06-12|Merged with editors/calligra editors/calligra-l10n-en_GB||2017-06-12|Merged with editors/calligra editors/calligra-l10n-es||2017-06-12|Merged with editors/calligra editors/calligra-l10n-et||2017-06-12|Merged with editors/calligra editors/calligra-l10n-fi||2017-06-12|Merged with editors/calligra editors/calligra-l10n-gl||2017-06-12|Merged with editors/calligra editors/calligra-l10n-it||2017-06-12|Merged with editors/calligra editors/calligra-l10n-kk||2017-06-12|Merged with editors/calligra editors/calligra-l10n-nb||2017-06-12|Merged with editors/calligra editors/calligra-l10n-nl||2017-06-12|Merged with editors/calligra editors/calligra-l10n-sk||2017-06-12|Merged with editors/calligra editors/calligra-l10n-sv||2017-06-12|Merged with editors/calligra editors/calligra-l10n-tr||2017-06-12|Merged with editors/calligra editors/calligra-l10n||2017-06-12|Merged with editors/calligra www/py-flask-restplus08||2017-06-21|Obsolete and not depended on anymore databases/pgpool-II|databases/pgpool|2017-06-25|Has expired: Deprecated by upstream; use database/pgpool instead databases/pgpool-II-30|databases/pgpool|2017-06-25|Has expired: Deprecated by upstream; use database/pgpool instead games/libgames-support||2017-06-25|Has expired: Superseded by libgnome-games-support, no longer used by anything net/sixxs-aiccu||2017-06-25|Has expired: SixXS shutdown on 2017-06-06, https://www.sixxs.net/sunset/ databases/pgpoolAdmin||2017-06-25|Removed, depended on expired databases/pgpool-II and only supported PostgreSQL 9.2 which is will EOL in September 2017 sysutils/syslog-ng-devel|sysutils/syslog-ng310|2017-06-28|Balabit's syslog-ng team has switched to a rolling release model now print/axpoint|print/p5-XML-Handler-AxPoint|2017-06-30|Rename to match CPAN naming misc/p5-Geo-Coder-Many||2017-07-01|Has expired: deprecated and no longer maintained by upstream graphics/gimp-elsamuko-script||2017-07-01|Has expired: Broken for more than 2 years devel/anjuta-extras||2017-07-01|Has expired: Last release in 2013 and doesn't build with recent GTK+ www/apache22-worker-mpm||2017-07-01|Has expired: Upstream propose EoL of apache 2.2.x during the next 12 months www/apache22-itk-mpm||2017-07-01|Has expired: Upstream propose EoL of apache 2.2.x during the next 12 months www/apache22-peruser-mpm||2017-07-01|Has expired: Upstream propose EoL of apache 2.2.x during the next 12 months www/apache22-event-mpm||2017-07-01|Has expired: Upstream propose EoL of apache 2.2.x during the next 12 months net/freeradius2|net/freeradius3|2017-07-01|Has expired: EoL, use net/freeradius3 instead net/abills||2017-07-01|Removed, unmaintained and depends on expired net/freeradius2 net-mgmt/ezradius||2017-07-01|Removed, unmaintained and depends on expired net/freeradius2 x11-toolkits/qt5-declarative||2017-07-01|Has expired: Has not been released since Qt 5.5 -- installation can lead to runtime conflicts with qt5-quick deskutils/california|deskutils/gnome-calendar|2017-07-02|Has expired: Orphaned upstream, replaced by gnome-calendar devel/etcd3|devel/etcd31|2017-07-07|Version 3.2 introduces breaking changes sysutils/py-iocage|sysutils/py3-iocage|2017-07-10|Has expired: obsoleted by sysutils/py3-iocage port using Python 3 instead of Python 2 www/mediawiki126|www/mediawiki127|2017-07-10|Has expired: Upstream support EoL devel/libbrotli|archivers/brotli|2017-07-12|meta project no longer required to build libs dns/opendnssec13|dns/opendnssec|2017-07-13|Has expired: Approaching EOL, upgrade to opendnssec 1.4 or 2 multimedia/banshee||2017-07-13|Has expired: Project is not being actively maintained upstream anymore www/libhtp-suricata||2017-07-16|No longer required. security/suricata now uses official (not forked) libhtp databases/py-odbc|databases/py-pyodbc|2017-07-18|Rename to comply with PyPI scheme security/sshguard-ipfw|security/sshguard|2017-07-20|Merged with security/sshguard security/sshguard-pf|security/sshguard|2017-07-20|Merged with security/sshguard security/sshguard-null|security/sshguard|2017-07-20|Merged with security/sshguard audio/gstreamer1-plugins-mad|audio/gstreamer1-plugins-mpg123|2017-07-21|The GStreamer 1 mad plugin was removed, the mpg123 plugin supplies the same functionality x11-toolkits/gstreamer1-plugins-gtksink|x11-toolkits/gstreamer1-plugins-gtk|2017-07-21|The GStreamer 1 gtksink plugin was renamed www/rubygem-jquery-ui-rails-rails5||2017-07-22|Remove port that is probably useless (not properly hooked to the build) devel/ffcall|devel/libffcall|2017-07-28|Project was renamed databases/grass|databases/grass6|2017-07-30|Project was renamed to allow for grass7 net/rubygem-oauth212|net/rubygem-oauth2|2017-07-31|Has expired: Only created for www/gitlab; please use net/rubygem-oauth2 instead textproc/rubygem-liquid3|textproc/rubygem-liquid|2017-07-31|Has expired: Use textproc/rubygem-liquid instead mail/dovecot2-antispam-plugin|mail/dovecot-pigeonhole|2017-07-31|Has expired: Use pigeonhole instead. See https://wiki2.dovecot.org/HowTo/AntispamWithSieve mail/dovecot-antispam|mail/dovecot-pigeonhole|2017-07-31|Has expired: Dovecot-1.x is deprecated. Use dovecot2 and dovecot2-antispam-plugin instead mail/dovecot-sieve|mail/dovecot-pigeonhole|2017-07-31|Has expired: Dovecot-1.x is deprecated. Use dovecot2 and dovecot-pigeonhole instead mail/dovecot-managesieve|mail/dovecot-pigeonhole|2017-07-31|Has expired: Dovecot-1.x is deprecated. Use dovecot2 and dovecot-pigeonhole instead www/rubygem-jquery-ui-rails5-rails4|www/rubygem-jquery-ui-rails-rails4|2017-07-31|Has expired: Only created for www/gitlab; please use www/rubygem-jquery-ui-rails-rails4 instead security/rubygem-omniauth13|security/rubygem-omniauth|2017-07-31|Has expired: Only created for www/gitlab; please use security/rubygem-omniauth instead devel/rubygem-health_check22|devel/rubygem-health_check|2017-07-31|Has expired: Only created for www/gitlab; please use devel/rubygem-health_check instead devel/rubygem-semantic_puppet0|devel/rubygem-semantic_puppet|2017-07-31|Has expired: Use devel/rubygem-semantic_puppet instead devel/rubygem-newrelic_rpm3|devel/rubygem-newrelic_rpm|2017-07-31|Has expired: Only created for www/gitlab; please use devel/rubygem-newrelic_rpm instead lang/p5-Parse-Perl||2017-07-31|Has expired: does not build with Perl >= 5.22 sysutils/rubygem-puppet_forge1|sysutils/rubygem-puppet_forge|2017-07-31|Has expired: Use sysutils/rubygem-puppet_forge instead sysutils/rubygem-SyslogLogger||2017-07-31|Has expired: Project is EOL'd because it was merged into Ruby 2.0 multimedia/avbin||2017-07-31|Has expired: Unfetchable for more than six months (google code has gone away) games/gondola||2017-07-31|Depends on expired multimedia/avbin sysutils/flyback||2017-07-31|Unfetchable for more than six months (google code has gone away) multimedia/py-ffmpeg||2017-07-31|Has expired: Deprecated upstream in favour of ffpyplayer devel/cloudabi-binutils-aarch64|devel/cloudabi-toolchain|2017-07-31|ELF-toolchain based tools should be used instead devel/cloudabi-binutils-x86_64|devel/cloudabi-toolchain|2017-07-31|ELF-toolchain based tools should be used instead security/openvas-libraries|security/openvas8-libraries|2017-08-03|Renamed to include openvas 9 ports security/openvas-cli|security/openvas8-cli|2017-08-03|Renamed to include openvas 9 ports. It reflects a better name security/openvas-manager|security/openvas8-manager|2017-08-03|Renamed to include openvas 9 ports. It reflects a better name security/openvas-scanner|security/openvas8-scanner|2017-08-03|Renamed to include openvas 9 ports. It reflects a better name security/greenbone-security-assistant|security/greenbone-security-assistant8|2017-08-03|Renamed to include openvas 9 ports. It reflects a better name sysutils/consolekit|sysutils/consolekit2|2017-08-05|Continuation of the consolekit project mail/dovecot2|mail/dovecot|2017-08-07|Renamed to mail/dovecot mail/dovecot2-pigeonhole|mail/dovecot-pigeonhole|2017-08-07|Renamed to mail/dovecot-pigeonhole devel/hs-MonadCatchIO-mtl||2017-08-08|Deprecated in favor of the exceptions package devel/hs-MonadCatchIO-transformers||2017-08-08|Deprecated in favor of the exceptions package devel/hs-directory||2017-08-08|Part of the bundled packages in ghc devel/hs-syb-with-class-instances-text||2017-08-08|Upstream is unmaintained textproc/hs-citeproc-hs||2017-08-08|Upstream is unmaintained, use pandoc-citeproc instead sysutils/chvt||2017-08-10|Functionality available in base, using vidcontrol(1) graphics/rawtherapee-devel|graphics/rawtherapee|2017-08-12|Removed test release in favor of the newer stable release audio/py-jack|audio/py-py-jack|2017-08-20|Renamed to py-py-jack to match PyPI package name lang/whitespace||2017-08-21|Has expired: Mastersite disappeared databases/sqlitebrowser-qt5|databases/sqlitebrowser|2017-08-22|sqlitebrowser now uses QT5 misc/lr|misc/lazyread|2017-08-22|Renamed to reflect upstream name mail/roundcube-air||2017-08-23|Removed, does not work with main port games/plee-the-bear||2017-08-23|Has expired: Broken for more than 6 months x11-themes/kde-icons-umicons||2017-08-23|Has expired: Broken for more than 6 months lang/bigloo||2017-08-23|Has expired: Broken for more than 6 months audio/linux-neroaaccodec||2017-08-23|Has expired: Broken for more than 6 months x11-themes/kde-icons-dark-glass||2017-08-23|Has expired: Broken for more than 6 months misc/fortune-mod-ferengi_rules_of_acquisition||2017-08-23|Has expired: Broken for more than 6 months misc/fortune-mod-culmea-culmilor||2017-08-23|Has expired: Broken for more than 6 months misc/xyzcmd||2017-08-23|Has expired: Broken for more than 6 months russian/fortuneru||2017-08-23|Has expired: Broken for more than 6 months security/bdc||2017-08-23|Has expired: Broken for more than 6 months x11-themes/kde-icons-icosx||2017-08-23|Has expired: Broken for more than 6 months devel/insight||2017-08-23|Has expired: Broken for more than 6 months devel/gdb66||2017-08-23|Has expired: Broken for more than 6 months biology/biojava||2017-08-23|Has expired: Broken for more than 6 months java/intellij-pycharm|devel/pycharm-ce|2017-08-23|Renamed to reflect upstream name. Use a more appropriate origin (devel for development tools, IDE) www/pyweblib|www/py-pyweblib|2017-08-25|Rename to comply with PyPI scheme databases/libzbxpgsql|databases/zabbix3-libzbxpgsql|2017-08-26|Rename to allow multiple versions of libzbxpgsql to coexist x11-toolkits/kirigami||2017-08-28|Not needed by anything x11-toolkits/kirigami2|x11-toolkits/kf5-kirigami2|2017-08-28|Became an official framework www/speedtest-mini||2017-09-03|Has expired: Discontinued upstream (on June 30, 2017) devel/rubygem-sequel3|devel/rubygem-sequel|2017-09-03|Has expired: Use devel/rubygem-sequel instead audio/tomahawk||2017-09-03|Has expired: Project is dead upstream mail/rubygem-larch||2017-09-03|Has expired: Unmaintained by upstream, no changes since 2013 devel/rubygem-sidekiq4|devel/rubygem-sidekiq|2017-09-03|Has expired: Use devel/rubygem-sidekiq instead devel/rubygem-webpacker1-rails5|devel/rubygem-webpacker-rails5|2017-09-03|Has expired: Use devel/rubygem-webpacker-rails5 instead devel/rubygem-sidekiq-cron04|devel/rubygem-sidekiq-cron|2017-09-03|Has expired: Use devel/rubygem-sidekiq-cron instead www/py-django19||2017-09-03|Has expired: Unsupported upstream mail/movemail||2017-09-03|Has expired: Out of date ports-mgmt/fbsdmon||2017-09-03|Has expired: no longer maintained, web site it sends data to has been taken over by cybersquatters security/py-pyme|security/py-gpgme|2017-09-03|Has expired: Merged with GPGme project. Please use security/py-gpgme instead lang/python33||2017-09-03|Has expired: No longer receives bug fixes, only security updates. Please update to Python 3.6 databases/py33-gdbm||2017-09-03|Removed, please update to Python 3.6 databases/py33-sqlite3||2017-09-03|Removed, please update to Python 3.6 devel/py33-setuptools||2017-09-03|Removed, please update to Python 3.6 x11-toolkits/py33-tkinter||2017-09-03|Removed, please update to Python 3.6 devel/py3-enum34||2017-09-03|Removed, Python 3.3 only security/clambc||2017-09-14|Has expired: Practically unmaintained, featuring issues elsewhere solved 6 years ago devel/cmake-modules||2017-09-14|Deleted, merged into devel/cmake devel/cargo|lang/rust|2017-09-15|Merged with lang/rust security/gnupg22|security/gnupg|2017-09-19|Removed, security/gnupg is now gnupg22 mail/milter-greylist-devel|mail/milter-greylist|2017-09-22|Has expired: mail/milter-greylist provides same version and options devel/libexecinfo||2017-09-22|Is present in the base system of all supported releases games/ember||2017-09-23|Removed, it is BROKEN and no longer developed since 2014 ports-mgmt/packagekit-qt4||2017-09-28|Has expired: Ignored for more than 5 years ports-mgmt/kpackagekit||2017-09-28|Has expired: Skipped for more than 5 years dns/rubygem-public_suffix2|dns/rubygem-public_suffix|2017-09-30|Has expired: Use dns/rubygem-public_suffix instead www/rubygem-deckar01-task_list1|www/rubygem-deckar01-task_list|2017-09-30|Has expired: Use www/rubygem-deckar01-task_list instead devel/py-twisted152|devel/py-twisted|2017-09-30|Has expired: Use devel/py-twisted instead devel/py-twistedCore|devel/py-twisted|2017-09-30|Has expired: Use devel/py-twisted instead devel/py-twistedFlow|devel/py-twisted|2017-09-30|Has expired: Use devel/py-twisted instead devel/py-twistedRunner|devel/py-twisted|2017-09-30|Has expired: Use devel/py-twisted instead dns/py-twistedNames|devel/py-twisted|2017-09-30|Has expired: Use devel/py-twisted instead mail/py-twistedMail|devel/py-twisted|2017-09-30|Has expired: Use devel/py-twisted instead net/py-twistedPair|devel/py-twisted|2017-09-30|Has expired: Use devel/py-twisted instead net-im/py-twistedWords|devel/py-twisted|2017-09-30|Has expired: Use devel/py-twisted instead news/py-twistedNews|devel/py-twisted|2017-09-30|Has expired: Use devel/py-twisted instead security/py-twistedConch|devel/py-twisted|2017-09-30|Has expired: Use devel/py-twisted instead textproc/py-twistedLore|devel/py-twisted|2017-09-30|Has expired: Use devel/py-twisted instead www/py-twistedWeb|devel/py-twisted|2017-09-30|Has expired: Use devel/py-twisted instead www/py-twistedWeb2|devel/py-twisted|2017-09-30|Has expired: Use devel/py-twisted instead devel/libclaw||2017-09-30|Has expired: useless for anything apart from removed games/plee-the-bear ports-mgmt/redports-node||2017-10-01|Has expired: Upstream is dead so port is not useable anymore sysutils/py3-iocage|sysutils/iocage|2017-10-02|Port was renamed audio/ventrilo-server||2017-10-04|No more freebsd distfiles net-im/ayttm||2017-10-04|Non functional graphics/diacanvas2||2017-10-04|GNOME2 library unused anymore sysutils/bacula5-client-static|sysutils/bacula-client-static|2017-10-05|Has expired: No upstream commits since 2013. Use sysutils/bacula-server sysutils/bacula5-client|sysutils/bacula-client|2017-10-05|Has expired: No upstream commits since 2013. Use sysutils/bacula-server sysutils/bacula5-bat|sysutils/bacula-bat|2017-10-05|Has expired: No upstream commits since 2013. Use sysutils/bacula-server sysutils/bacula5-server|sysutils/bacula-server|2017-10-05|Has expired: No upstream commits since 2013. Use sysutils/bacula-server net-mgmt/nagios-check_bacula5|net-mgmt/nagios-check_bacula|2017-10-05|Has expired: No upstream commits since 2013. Use sysutils/bacula-server sysutils/bacula5-docs|sysutils/bacula-docs|2017-10-05|Has expired: No upstream commits since 2013. Use sysutils/bacula-docs editors/vanubi||2017-10-07|Has expired: Vanubi is no longer actively maintained converters/py-bencode|converters/py-bencode.py|2017-10-07|Switch to a fork that supports both python2 and python3 japanese/jd||2017-10-08|Does not build and 2ch.net API has changed, so would not work anyway devel/vtable-dumper|devel/abi-compliance-checker|2017-10-08|Use abi-compliance-checker, which contains this program in newer version graphics/py-graph-dot||2017-10-08|Has expired: Unfetchable for more than six months (google code has gone away) graphics/py-graph||2017-10-08|Removed, depends on graphics/py-graph-dot net/py-python-cloudfiles||2017-10-12|Deprecated by usptream since August 1, 2013. Use databases/py-python-swiftclient instead audio/festdoc||2017-10-13|No version of the documentation matching current release audio/gstreamer-plugins-moodbar||2017-10-13|Abandonware, no public distfiles devel/arduino-glcd|devel/arduino-openglcd|2017-10-14|Switched to active fork x11-wm/awesome2|x11-wm/awesome|2017-10-14|Has expired: Awesome WM 2.x is deprecated use 4.x instead x11-wm/awesome3|x11-wm/awesome|2017-10-14|Has expired: Awesome WM 3.x is deprecated use 4.x instead www/moodle30|www/moodle33|2017-10-14|Has expired: Deprecated by upstream, please use www/moodle33 instead lang/gcc5-devel|lang/gcc5|2017-10-14|The GCC 5 branch has been closed, use the final release instead (or a newer major version) devel/vtcl||2017-10-16|Has expired: This port depends on Tcl/Tk 8.4 , which is no longer maintained. Please port it to 8.5+ editors/tpad||2017-10-16|Has expired: This port depends on Tcl/Tk 8.4 , which is no longer maintained. Please port it to 8.5+ games/polypuzzle||2017-10-16|Has expired: This port depends on Tcl/Tk 8.4 , which is no longer maintained. Please port it to 8.5+ multimedia/nxtvepg||2017-10-16|Has expired: This port depends on Tcl/Tk 8.4 , which is no longer maintained. Please port it to 8.5+ net/xpvm||2017-10-16|Has expired: This port depends on Tcl/Tk 8.4 , which is no longer maintained. Please port it to 8.5+ x11/tkXwin||2017-10-16|Has expired: This port depends on Tcl/Tk 8.4 , which is no longer maintained. Please port it to 8.5+ games/crafty-tablebase-pawn||2017-10-17|Waste of resources devel/p5-Log-Any-Adapter-Syslog|devel/p5-Log-Any|2017-10-19|Has expired: Merged with devel/p5-Log-Any lang/fpc-tcl||2017-10-20|Has expired: This port depends on Tcl/Tk 8.4 , which is no longer maintained. Please port it to 8.5+ net/asterisk11|net/asterisk13|2017-10-28|Has expired: Asterisk 11.x will reach EOL on 2017-10-25. Please migrate to net/asterisk13 lang/gcc5-aux|lang/gcc6-aux|2017-11-01|Has expired: Essentially unmaintained and replaced by gcc6-aux textproc/rubygem-rouge1|textproc/rubygem-rouge|2017-11-01|Has expired: Use textproc/rubygem-rouge instead devel/linux-c6-ncurses-base||2017-11-01|Merged into emulators/linux_base-c6 devel/linux-c7-ncurses-base||2017-11-01|Merged into emulators/linux_base-c7 databases/puppetdb-terminus3|databases/puppetdb-terminus4|2017-11-03|Has expired: End of life upstream databases/puppetdb3|databases/puppetdb4|2017-11-03|Has expired: End of life upstream net/libsocketcpp||2017-11-06|Has expired: Uses gets(3) security/py-btchip|security/py-btchip-python|2017-11-07|Rename to reflect official Python modules naming scheme devel/pear-PPW||2017-11-09|Has expired: Project is EoL lang/ats||2017-11-11|Has expired: Unmaintained, outdated, needs lots of refreshment databases/elixir-ecto_migrate||2017-11-11|Has expired: Broken for more than 6 months audio/gspeakers||2017-11-11|Has expired: Broken for more than 6 months net/p5-Filesys-SmbClient||2017-11-11|Has expired: Broken for more than 6 months audio/tclmidi||2017-11-11|Has expired: Broken for more than 6 months security/py-xmlsec||2017-11-11|Has expired: Broken for more than 6 months security/samba-virusfilter||2017-11-11|Has expired: Broken for more than 6 months textproc/ocaml-pxp||2017-11-11|Has expired: Broken for more than 6 months audio/sooperlooper||2017-11-11|Has expired: Broken for more than 6 months devel/dwarves||2017-11-11|Has expired: Broken for more than 6 months devel/cl-cffi-sbcl||2017-11-11|Has expired: Broken for more than 6 months devel/pinba_engine||2017-11-11|Has expired: Broken for more than 6 months devel/py-event||2017-11-11|Has expired: Broken for more than 6 months databases/glom||2017-11-11|Has expired: Broken for more than 6 months math/bargraph||2017-11-11|Has expired: Unfetchable for more than six months (google code has gone away) devel/oniguruma4|devel/oniguruma6|2017-11-12|Upstream no longer maintained, superseded by devel/oniguruma6 devel/oniguruma5|devel/oniguruma6|2017-11-12|Upstream no longer maintained, superseded by devel/oniguruma6 devel/oniguruma6|devel/oniguruma|2017-11-12|Rename devel/oniguruma6 to oniguruma (no other versions in ports tree) multimedia/plexhometheater||2017-11-12|Has expired: Broken for more than 6 months databases/cassandra2||2017-11-12|Has expired: Broken for more than 6 months graphics/geos35|graphics/geos|2017-11-12|Has expired: legacy version, no longer needed astro/gmapcatcher||2017-11-12|Has expired: Unfetchable for more than six months (google code has gone away) audio/smasher||2017-11-12|Has expired: Does not build with modern csound audio/csound|audio/csound6|2017-11-12|Has expired: Not supported upstream anymore, use csound6 french/eficas||2017-11-14|Removed with Code_Aster 13.4.0, should be replaced by aster-study in cad/salome databases/grass6|databases/grass7|2017-11-18|Removed in favor of grass 7 news/brag||2017-11-21|Has expired: Tcl/Tk 8.4 is no longer maintained, please use 8.5+ textproc/srilm||2017-11-21|Has expired: Tcl/Tk 8.4 is no longer maintained, please use 8.5+ x11-toolkits/tk84|x11-toolkits/tk85|2017-11-21|Has expired: Tcl/Tk 8.4 is no longer maintained, please use 8.5+ devel/tkinspect||2017-11-21|Has expired: Tcl/Tk 8.4 is no longer maintained, please use 8.5+ games/bogged||2017-11-21|Has expired: Tcl/Tk 8.4 is no longer maintained, please use 8.5+ games/ttraffic||2017-11-21|Has expired: Tcl/Tk 8.4 is no longer maintained, please use 8.5+ games/ifm||2017-11-21|Has expired: Tcl/Tk 8.4 is no longer maintained, please use 8.5+ games/tksol||2017-11-21|Has expired: Tcl/Tk 8.4 is no longer maintained, please use 8.5+ lang/tcl84|lang/tcl85|2017-11-21|Has expired: Tcl/Tk 8.4 is no longer maintained, please use 8.5+ mail/tkrat2||2017-11-21|Has expired: Tcl/Tk 8.4 is no longer maintained, please use 8.5+ multimedia/dtv||2017-11-21|Has expired: Tcl/Tk 8.4 is no longer maintained, please use 8.5+ net-mgmt/netwag||2017-11-21|Has expired: Tcl/Tk 8.4 is no longer maintained, please use 8.5+ net/hping-devel||2017-11-21|Has expired: Tcl/Tk 8.4 is no longer maintained, please use 8.5+ www/linux-firefox||2017-11-22|Has expired: Use native www/firefox or www/firefox-esr instead www/linux-seamonkey||2017-11-22|Has expired: Use native www/seamonkey instead graphics/linux-adobesvg||2017-11-22|Has expired: not supported by linux-firefox 52 or later sysutils/qjail2||2017-11-26|Has expired: Only for FreeBSD 8 and 9, use sysutils/qjail[4] instead www/newsbeuter|www/newsboat|2017-11-27|Port was renamed devel/buildbot|devel/py-buildbot|2017-11-29|Rename to comply with PyPI scheme devel/buildbot-console-view|devel/py-buildbot-console-view|2017-11-29|Rename to comply with PyPI scheme devel/buildbot-pkg|devel/py-buildbot-pkg|2017-11-29|Rename to comply with PyPI scheme devel/buildbot-waterfall-view|devel/py-buildbot-waterfall-view|2017-11-29|Rename to comply with PyPI scheme devel/buildbot-worker|devel/py-buildbot-worker|2017-11-29|Rename to comply with PyPI scheme devel/buildbot-www|devel/py-buildbot-www|2017-11-29|Rename to comply with PyPI scheme emulators/ppsspp-devel|emulators/ppsspp|2017-11-29|Out of date: use emulators/ppsspp for now audio/shairport|audio/shairport-sync|2017-11-29|Has expired: Officially unmaintained upstream. Use audio/shairport-sync instead accessibility/py3-speech-dispatcher|accessibility/py-speech-dispatcher@py36|2017-11-30|Moved to a flavored, generic, version accessibility/py3-atspi|accessibility/py-atspi@py36|2017-11-30|Moved to a flavored, generic, version archivers/py3-libarchive-c|archivers/py-libarchive-c@py36|2017-11-30|Moved to a flavored, generic, version audio/py3-mutagen|audio/py-mutagen@py36|2017-11-30|Moved to a flavored, generic, version audio/py3-pylast|audio/py-pylast@py36|2017-11-30|Moved to a flavored, generic, version databases/py3-apsw|databases/py-apsw@py36|2017-11-30|Moved to a flavored, generic, version databases/py3-bsddb3|databases/py-bsddb3@py36|2017-11-30|Moved to a flavored, generic, version databases/py3-mysqlclient|databases/py-mysqlclient@py36|2017-11-30|Moved to a flavored, generic, version databases/py3-psycopg2|databases/py-psycopg2@py36|2017-11-30|Moved to a flavored, generic, version databases/py34-gdbm|databases/py-gdbm@py34|2017-11-30|Moved to a flavored, generic, version databases/py34-sqlite3|databases/py-sqlite3@py34|2017-11-30|Moved to a flavored, generic, version databases/py35-gdbm|databases/py-gdbm@py35|2017-11-30|Moved to a flavored, generic, version databases/py35-sqlite3|databases/py-sqlite3@py35|2017-11-30|Moved to a flavored, generic, version databases/py36-gdbm|databases/py-gdbm@py36|2017-11-30|Moved to a flavored, generic, version databases/py36-sqlite3|databases/py-sqlite3@py36|2017-11-30|Moved to a flavored, generic, version devel/py27-setuptools|devel/py-setuptools@py27|2017-11-30|Moved to a flavored, generic, version devel/py3-threema-msgapi|devel/py-threema-msgapi@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-Jinja2|devel/py-Jinja2@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-apipkg|devel/py-apipkg@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-asttokens|devel/py-asttokens@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-babel|devel/py-babel@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-cffi|devel/py-cffi@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-click-log|devel/py-click-log@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-click-threading|devel/py-click-threading@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-click|devel/py-click@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-colorama|devel/py-colorama@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-coloredlogs|devel/py-coloredlogs@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-dateutil|devel/py-dateutil@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-dbus|devel/py-dbus@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-defusedxml|devel/py-defusedxml@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-docopt|devel/py-docopt@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-flake8-builtins|devel/py-flake8-builtins@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-flake8-docstrings|devel/py-flake8-docstrings@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-flake8-import-order|devel/py-flake8-import-order@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-flake8-polyfill|devel/py-flake8-polyfill@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-flake8-quotes|devel/py-flake8-quotes@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-flake8|devel/py-flake8@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-freezegun|devel/py-freezegun@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-gobject3|devel/py-gobject3@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-hgtools|devel/py-hgtools@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-icalendar|devel/py-icalendar@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-jedi|devel/py-jedi@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-jsonschema|devel/py-jsonschema@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-libpeas|devel/py-libpeas@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-libzfs|devel/py-libzfs@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-llfuse|devel/py-llfuse@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-lxml|devel/py-lxml@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-mccabe|devel/py-mccabe@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-mock|devel/py-mock@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-nose|devel/py-nose@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pbr|devel/py-pbr@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pip|devel/py-pip@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pluggy|devel/py-pluggy@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-ply|devel/py-ply@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pretend|devel/py-pretend@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-prompt_toolkit|devel/py-prompt_toolkit@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-protobuf|devel/py-protobuf@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-py|devel/py-py@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pyasn1|devel/py-pyasn1@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pycodestyle|devel/py-pycodestyle@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pycparser|devel/py-pycparser@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pydocstyle|devel/py-pydocstyle@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pyflakes|devel/py-pyflakes@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pygit2|devel/py-pygit2@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pyicu|devel/py-pyicu@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pylru-cache|devel/py-pylru-cache@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pytest-capturelog|devel/py-pytest-capturelog@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pytest-runner|devel/py-pytest-runner@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pytest-timeout|devel/py-pytest-timeout@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pytest-xdist|devel/py-pytest-xdist@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pytest|devel/py-pytest@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-python-magic|devel/py-python-magic@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-pytz|devel/py-pytz@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-rubymarshal|devel/py-rubymarshal@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-scripttest|devel/py-scripttest@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-setproctitle|devel/py-setproctitle@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-setuptools_scm|devel/py-setuptools_scm@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-simplejson|devel/py-simplejson@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-six|devel/py-six@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-tabulate|devel/py-tabulate@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-toposort|devel/py-toposort@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-tox|devel/py-tox@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-tzlocal|devel/py-tzlocal@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-urwid|devel/py-urwid@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-vcversioner|devel/py-vcversioner@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-verboselogs|devel/py-verboselogs@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-virtualenv|devel/py-virtualenv@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-voluptuous|devel/py-voluptuous@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-wcwidth|devel/py-wcwidth@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-xdg|devel/py-xdg@py36|2017-11-30|Moved to a flavored, generic, version devel/py3-yaml|devel/py-yaml@py36|2017-11-30|Moved to a flavored, generic, version devel/py34-setuptools|devel/py-setuptools@py34|2017-11-30|Moved to a flavored, generic, version devel/py35-setuptools|devel/py-setuptools@py35|2017-11-30|Moved to a flavored, generic, version devel/py36-setuptools|devel/py-setuptools@py36|2017-11-30|Moved to a flavored, generic, version dns/py3-dnspython|dns/py-dnspython@py36|2017-11-30|Moved to a flavored, generic, version dns/py3-idna|dns/py-idna@py36|2017-11-30|Moved to a flavored, generic, version graphics/py3-cairo|graphics/py-cairo@py36|2017-11-30|Moved to a flavored, generic, version graphics/py3-imagesize|graphics/py-imagesize@py36|2017-11-30|Moved to a flavored, generic, version graphics/py3-pillow|graphics/py-pillow@py36|2017-11-30|Moved to a flavored, generic, version graphics/py3-pygraphviz|graphics/py-pygraphviz@py36|2017-11-30|Moved to a flavored, generic, version lang/cython3|lang/cython@py36|2017-11-30|Moved to a flavored, generic, version misc/py3-pexpect|misc/py-pexpect@py36|2017-11-30|Moved to a flavored, generic, version misc/py3-tqdm|misc/py-tqdm@py36|2017-11-30|Moved to a flavored, generic, version multimedia/py3-gstreamer1|multimedia/py-gstreamer1@py36|2017-11-30|Moved to a flavored, generic, version net-mgmt/py3-dnsdiag|net-mgmt/py-dnsdiag@py36|2017-11-30|Moved to a flavored, generic, version net/py3-netifaces|net/py-netifaces@py36|2017-11-30|Moved to a flavored, generic, version net/py3-pysocks|net/py-pysocks@py36|2017-11-30|Moved to a flavored, generic, version net/py3-urllib3|net/py-urllib3@py36|2017-11-30|Moved to a flavored, generic, version print/py3-fonttools|print/py-fonttools@py36|2017-11-30|Moved to a flavored, generic, version print/py3-pycups|print/py-pycups@py36|2017-11-30|Moved to a flavored, generic, version security/py3-certifi|security/py-certifi@py36|2017-11-30|Moved to a flavored, generic, version security/py3-cryptography|security/py-cryptography@py36|2017-11-30|Moved to a flavored, generic, version security/py3-ecdsa|security/py-ecdsa@py36|2017-11-30|Moved to a flavored, generic, version security/py3-libnacl|security/py-libnacl@py36|2017-11-30|Moved to a flavored, generic, version security/py3-openssl|security/py-openssl@py36|2017-11-30|Moved to a flavored, generic, version security/py3-pbkdf2|security/py-pbkdf2@py36|2017-11-30|Moved to a flavored, generic, version security/py3-pyaes|security/py-pyaes@py36|2017-11-30|Moved to a flavored, generic, version security/py3-pycrypto|security/py-pycrypto@py36|2017-11-30|Moved to a flavored, generic, version sysutils/py3-execnet|sysutils/py-execnet@py36|2017-11-30|Moved to a flavored, generic, version sysutils/py3-pkginfo|sysutils/py-pkginfo@py36|2017-11-30|Moved to a flavored, generic, version sysutils/py3-ptyprocess|sysutils/py-ptyprocess@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-asciinema|textproc/py-asciinema@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-pager|textproc/py-pager@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-MarkupSafe|textproc/py-MarkupSafe@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-alabaster|textproc/py-alabaster@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-chardet|textproc/py-chardet@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-docutils|textproc/py-docutils@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-feedparser|textproc/py-feedparser@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-humanfriendly|textproc/py-humanfriendly@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-hunspell|textproc/py-hunspell@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-libxml2|textproc/py-libxml2@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-numpydoc|textproc/py-numpydoc@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-pyPEG2|textproc/py-pyPEG2@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-pygments|textproc/py-pygments@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-pystemmer|textproc/py-pystemmer@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-qrcode|textproc/py-qrcode@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-snowballstemmer|textproc/py-snowballstemmer@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-sphinx|textproc/py-sphinx@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-sphinx_rtd_theme|textproc/py-sphinx_rtd_theme@py36|2017-11-30|Moved to a flavored, generic, version textproc/py3-texttable|textproc/py-texttable@py36|2017-11-30|Moved to a flavored, generic, version www/py3-cssutils|www/py-cssutils@py36|2017-11-30|Moved to a flavored, generic, version www/py3-httplib2|www/py-httplib2@py36|2017-11-30|Moved to a flavored, generic, version www/py3-requests|www/py-requests@py36|2017-11-30|Moved to a flavored, generic, version x11-toolkits/py34-tkinter|x11-toolkits/py-tkinter@py34|2017-11-30|Moved to a flavored, generic, version x11-toolkits/py35-tkinter|x11-toolkits/py-tkinter@py35|2017-11-30|Moved to a flavored, generic, version x11-toolkits/py36-tkinter|x11-toolkits/py-tkinter@py36|2017-11-30|Moved to a flavored, generic, version security/py-rekall_gui||2017-11-30|Has expired: PoC that is no longer supported security/webshag||2017-12-01|Has expired: Abandoned www/p5-Yahoo-Lifestyle||2017-12-01|Has expired: This service has been shut down games/linux-rtcw|games/iortcw|2017-12-01|Has expired: Use the native and open source games/iortcw instead java/bootstrap-openjdk|java/bootstrap-openjdk6|2017-12-01|Has expired: superseded by java/bootstrap-openjdk[68] lang/gcc46|lang/gcc6|2017-12-01|Has expired: Unsupported by upstream. Use GCC 6 or newer instead security/krb5-113|security/krb5-114|2017-12-03|Has expired: EOL twelve months after release of krb5-1.15 net/bird6|net/bird@ipv6|2017-12-06|Moved to a flavored version devel/kore-notls|devel/kore@notls|2017-12-06|Moved to a flavored version devel/llvm-cheri128|devel/llvm-cheri|2017-12-07|A single cheri compiler can now target 128-bit and 256-bit capabilities audio/cd-console||2017-12-13|Has expired: No public distfiles textproc/pecl-cld||2017-12-13|Has expired: Depends on expired devel/cld textproc/p5-Lingua-Identify-CLD||2017-12-13|Has expired: Depends on expired devel/cld devel/cld||2017-12-13|Has expired: Unfetchable for more than six months (google code has gone away) devel/py-ode|devel/py-PyODE|2017-12-14|Rename to reflect official Python modules naming scheme net-im/pork||2017-12-16|Removed, AIM shut down on 2017-12-15 security/aimsniff||2017-12-16|Removed, AIM shut down on 2017-12-15 net-im/bsflite||2017-12-18|Removed, AIM shut down on 2017-12-15 audio/last.fm||2017-12-18|Removed, Last.fm Radio shutdown in 2014-03 net-im/p5-Net-AIM||2017-12-19|Removed, AIM shut down on 2017-12-15 devel/swig13|devel/swig30|2017-12-20|swig 1.3 is not maintained, use swig 3.0 devel/swig20|devel/swig30|2017-12-20|swig 2.0 is not maintained, use swig 3.0 devel/android-tools-adb-devel|devel/android-tools-adb|2017-12-20|Out of date: use devel/android-tools-adb for now devel/android-tools-fastboot-devel|devel/android-tools-fastboot|2017-12-20|Out of date: use devel/android-tools-fastboot for now math/petsc|science/PETSc|2017-12-20|Recreated after it has been deleted in r366959 on 2014-09-01 math/petsc-mpich|science/PETSc|2017-12-20|Recreated after it has been deleted in r321243 on 2013-06-19 (it was a slave port) textproc/py-elasticsearch-py|textproc/py-elasticsearch|2017-12-21|Rename to match PyPI naming japanese/egg-canna||2017-12-25|Has expired: Requires Emacs versions before 23 editors/tree-widget||2017-12-26|Has expired: Now part of Emacs www/py-flup|www/py-flup6|2017-12-26|forked, for py3k support net/openh323||2017-12-27|Abandoned in 2007, continued as net/h323plus net/ohphone||2017-12-27|Part of OpenH323 project, abandoned in 2007 devel/pwlib||2017-12-27|Part of OpenH323 project, abandoned in 2007, continued as devel/ptlib deskutils/etask||2017-12-27|Has expired: Unsupported by upstream since 2007 misc/p5-Asterisk|misc/p5-asterisk-perl|2017-12-29|Rename to match upstream naming www/npm2|www/npm|2017-12-31|Has expired: use www/npm or www/npm-node* instead www/npm3|www/npm|2017-12-31|Has expired: use www/npm or www/npm-node* instead net/rubygem-fog-aws0|net/rubygem-fog-aws|2017-12-31|Has expired: use net/rubygem-fog-aws or net/rubygem-fog-aws1 instead net-mgmt/nrpe|net-mgmt/nrpe3|2018-01-01|nrpe 2.0 not maintained, use nrpe 3.0 net-mgmt/nrpe-ssl|net-mgmt/nrpe3|2018-01-01|nrpe 2.0 not maintained, use nrpe 3.0 security/gnupg20|security/gnupg|2018-01-01|Has expired: Will reach EOL upstream on 2017-12-31 dns/dualserver|dns/dnsmasq|2018-01-01|Has expired: Please migrate to dns/dnsmasq; over the years dualserver has become unmaintainable devel/p5-Parse-Pidl44|devel/p5-Parse-Pidl|2018-01-01|Has expired: use devel/p5-Parse-Pidl instead www/rubygem-jwt2|www/rubygem-jwt|2018-01-02|www/rubygem-jwt has been updated to 2.x misc/py-qt5-doc||2018-01-02|No longer shipped by upstream audio/beast||2018-01-05|Has expired: 4.5 years old version, six versions behind, requires old toolchain, and unmaintained devel/rubygem-multipart-post|www/rubygem-multipart-post|2018-01-05|Remove duplicate port devel/p5-MooseX-Role-WithOverloading||2018-01-06|Has expired: deprecated by upstream (obsolete with modern Moose) devel/p5-Test-Block||2018-01-06|Has expired: Marked as deprecated upstream x11-toolkits/qt5-declarative-render2d||2018-01-06|Merged into x11-toolkits/qt5-quick editors/vim-lite|editors/vim-console|2018-01-11|Renamed to reflect that it is console-only, not any lighter devel/py-repl|devel/py-pyrepl|2018-01-11|Rename to match pypi name devel/lua-bitop-51|devel/lua51-bitop|2018-01-14|Rename to lua51- prefix astro/boinc-setiathome-v7|astro/boinc-setiathome-v8|2018-01-14|Rename to v8 to reflect current version astro/boinc-setiathome-v8|astro/boinc-setiathome|2018-01-14|Rename to unversioned per adamw@ textproc/ruby-sary||2018-01-15|Has expired: Does not build with current versions of ruby textproc/ruby-deplate||2018-01-15|Has expired: Does not build with current versions of ruby www/ruby-aws||2018-01-15|Has expired: Does not build with current versions of ruby www/samidare||2018-01-15|Has expired: Does not build with current versions of ruby devel/ruby-calendar||2018-01-15|Has expired: Does not build with current versions of ruby devel/ruby-rbbr||2018-01-15|Has expired: Does not build with current versions of ruby devel/ruby-date2||2018-01-15|Has expired: Does not build with current versions of ruby audio/ruby-xmms2||2018-01-15|Has expired: Does not build with current versions of ruby net/unison-nox11|net/unison@nox11|2018-01-15|Moved to a flavored, generic, version audio/hydrogen-devel|audio/hydrogen|2018-01-17|Out of date: use audio/hydrogen for now graphics/py-rabbyt||2018-01-19|Has expired: Development ceased, no longer used in the ports deskutils/py-spice-gtk|deskutils/spice-gtk|2018-01-20|Old style Python bindings dropped, no difference from the master port lang/py-clojure|lang/py-clojure_py|2018-01-26|Rename to match PyPI naming www/tomcat-devel|www/tomcat9|2018-01-26|Apache Tomcat 9.0.4 is the first stable release of the 9.0.x series devel/rubygem-toml|textproc/rubygem-toml|2018-01-27|Move to a better category emulators/raine||2018-01-28|Has expired: Broken for more than 6 months mail/libmapi||2018-01-28|Has expired: Broken for more than 6 months www/lessc||2018-01-28|Has expired: Broken for more than 6 months www/uglifyjs||2018-01-28|Has expired: Broken for more than 6 months www/py-octoprint||2018-01-28|Has expired: Broken for more than 6 months www/xpi-noscript||2018-01-28|Has expired: Broken for more than 6 months www/npm-less-plugin-clean-css||2018-01-28|Has expired: Broken for more than 6 months www/caudium14||2018-01-28|Has expired: Depends on expiring lang/pike78 www/hinventory-client||2018-01-28|Has expired: Broken for more than 6 months security/tclgpg||2018-01-28|Has expired: Broken for more than 6 months security/pond||2018-01-28|Has expired: Broken for more than 6 months security/mdcrack||2018-01-28|Has expired: Broken for more than 6 months devel/npm-commander||2018-01-28|Has expired: Broken for more than 6 months devel/py-protocols-devel||2018-01-28|Has expired: Broken for more than 6 months devel/py-InlineEgg||2018-01-28|Has expired: Broken for more than 6 months devel/npm-amdefine||2018-01-28|Has expired: Broken for more than 6 months devel/npm-source-map||2018-01-28|Has expired: Broken for more than 6 months devel/libical-glib||2018-01-28|Has expired: Broken for more than 6 months devel/npm-graceful-readlink||2018-01-28|Has expired: Broken for more than 6 months devel/npm-clean-css||2018-01-28|Has expired: Broken for more than 6 months devel/py-ruledispatch||2018-01-28|Has expired: Depends on expiring devel/py-protocols-devel games/balazarbrothers||2018-01-28|Has expired: Broken for more than 6 months games/libretro-cores||2018-01-28|Has expired: Broken for more than 6 months games/gish-demo||2018-01-28|Has expired: Broken for more than 6 months games/cheech||2018-01-28|Has expired: Broken for more than 6 months audio/mbrolavox||2018-01-28|Has expired: Broken for more than 6 months audio/linux-mbrola||2018-01-28|Has expired: Depends on expiring audio/mbrolavox audio/gigedit||2018-01-28|Has expired: Broken for more than 6 months audio/gnomoradio||2018-01-28|Has expired: Broken for more than 6 months math/asir2000||2018-01-28|Has expired: Broken for more than 6 months multimedia/librespot||2018-01-28|Has expired: Broken for more than 6 months multimedia/bombono||2018-01-28|Has expired: Broken for more than 6 months lang/gcl||2018-01-28|Has expired: Broken for more than 6 months lang/pike78||2018-01-28|Has expired: Broken for more than 6 months shells/ambit||2018-01-28|Has expired: Broken for more than 6 months mail/evolution-mapi||2018-01-28|Has expired: Depends on expiring mail/libmapi devel/beautifyphp||2018-01-29|only works for PHP4 which is gone long ago devel/clanlib22|devel/clanlib|2018-01-29|No users in the ports tree, newer version available devel/php-xdebug|devel/pecl-xdebug|2018-01-30|Moved to pecl astro/py-pyfits|astro/py-astropy|2018-01-31|Has expired: Use astro/py-astropy instead devel/py-gitdb|devel/py-gitdb2|2018-01-31|Has expired: Use devel/py-gitdb2 instead devel/py-smmap|devel/py-smmap2|2018-01-31|Has expired: Use devel/py-smmap2 instead devel/rubygem-moneta06|devel/rubygem-moneta|2018-01-31|Has expired: Use devel/rubygem-moneta instead lang/ruby22|lang/ruby24|2018-01-31|Has expired: Upgrade to newer version (e.g. lang/ruby24) net/tcptraceroute-devel|net/tcptraceroute|2018-01-31|Has expired: Use net/tcptraceroute instead security/rubygem-openssl20|security/rubygem-openssl|2018-01-31|Has expired: Use security/rubygem-openssl instead sysutils/rubygem-hiera1|sysutils/rubygem-hiera|2018-01-31|Has expired: Use sysutils/rubygem-hiera instead www/py-django110|www/py-django111|2018-01-31|Has expired: Use www/py-django111 or www/py-django20 instead www/rubygem-http2|www/rubygem-http|2018-01-31|Has expired: Use www/rubygem-http instead www/rubygem-jekyll-watch1|www/rubygem-jekyll-watch|2018-01-31|Has expired: Use www/rubygem-jekyll-watch instead www/rubygem-puma2|www/rubygem-puma|2018-01-31|Has expired: Use www/rubygem-puma instead www/rubygem-turbolinks-classic|www/rubygem-turbolinks|2018-01-31|Has expired: Use www/rubygem-turbolinks instead databases/mysql-proxy||2018-01-31|Has expired: No longer maintained and not recommended for production use japanese/migemo-emacs23|japanese/migemo-emacs|2018-02-01|Moved to version agnostic name editors/emacs-nox11|editors/emacs@nox|2018-02-01|Moved to a flavored version audio/py-mad|audio/py-pymad|2018-02-03|Rename to match PyPI naming emulators/qemu-cheri128|emulators/qemu-cheri|2018-02-06|All versions installed in one port emulators/qemu-cheri128m|emulators/qemu-cheri|2018-02-06|All versions installed in one port chinese/eric6||2018-02-08|No longer shipped by upstream devel/cs-eric6||2018-02-08|No longer shipped by upstream devel/it-eric6||2018-02-08|No longer shipped by upstream devel/tr-eric6||2018-02-08|No longer shipped by upstream french/eric6||2018-02-08|No longer shipped by upstream portuguese/eric6||2018-02-08|No longer shipped by upstream devel/rubygem-event-bus||2018-02-08|Has expired: No longer maintained upstream accessibility/kdeaccessibility4|accessibility/kdeaccessibility-kde4|2018-02-10|Rename KDE4 metaports for simplicty deskutils/kdepim4-runtime|deskutils/kdepim-runtime-kde4|2018-02-10|Rename KDE4 metaports for simplicty deskutils/kdepim4|deskutils/kdepim-kde4|2018-02-10|Rename KDE4 metaports for simplicty deskutils/kdepimlibs4|deskutils/kdepimlibs-kde4|2018-02-10|Rename KDE4 metaports for simplicty devel/kdebindings4|devel/kdebindings-kde4|2018-02-10|Rename KDE4 metaports for simplicty devel/kdesdk4-kioslaves|devel/kdesdk-kioslaves-kde4|2018-02-10|Rename KDE4 metaports for simplicty devel/kdesdk4-strigi-analyzers|devel/kdesdk-strigi-analyzers-kde4|2018-02-10|Rename KDE4 metaports for simplicty devel/kdesdk4-thumbnailers|devel/kdesdk-thumbnailers-kde4|2018-02-10|Rename KDE4 metaports for simplicty devel/kdesdk4|devel/kdesdk-kde4|2018-02-10|Rename KDE4 metaports for simplicty games/kdegames4|games/kdegames-kde4|2018-02-10|Rename KDE4 metaports for simplicty graphics/kdegraphics4-mobipocket|graphics/kdegraphics-mobipocket-kde4|2018-02-10|Rename KDE4 metaports for simplicty graphics/kdegraphics4-strigi-analyzer|graphics/kdegraphics-strigi-analyzer-kde4|2018-02-10|Rename KDE4 metaports for simplicty graphics/kdegraphics4-svgpart|graphics/kdegraphics-svgpart-kde4|2018-02-10|Rename KDE4 metaports for simplicty graphics/kdegraphics4-thumbnailers|graphics/kdegraphics-thumbnailers-kde4|2018-02-10|Rename KDE4 metaports for simplicty graphics/kdegraphics4|graphics/kdegraphics-kde4|2018-02-10|Rename KDE4 metaports for simplicty misc/kdeedu4|misc/kdeedu-kde4|2018-02-10|Rename KDE4 metaports for simplicty misc/kdeutils4|misc/kdeutils-kde4|2018-02-10|Rename KDE4 metaports for simplicty multimedia/kdemultimedia4-ffmpegthumbs|multimedia/kdemultimedia-ffmpegthumbs-kde4|2018-02-10|Rename KDE4 metaports for simplicty multimedia/kdemultimedia4-mplayerthumbs|multimedia/kdemultimedia-mplayerthumbs-kde4|2018-02-10|Rename KDE4 metaports for simplicty multimedia/kdemultimedia4|multimedia/kdemultimedia-kde4|2018-02-10|Rename KDE4 metaports for simplicty net/kdenetwork4-filesharing|net/kdenetwork-filesharing-kde4|2018-02-10|Rename KDE4 metaports for simplicty net/kdenetwork4-strigi-analyzers|net/kdenetwork-strigi-analyzers-kde4|2018-02-10|Rename KDE4 metaports for simplicty net/kdenetwork4|net/kdenetwork-kde4|2018-02-10|Rename KDE4 metaports for simplicty sysutils/kdeadmin4|sysutils/kdeadmin-kde4|2018-02-10|Rename KDE4 metaports for simplicty www/kdewebdev4|www/kdewebdev-kde4|2018-02-10|Rename KDE4 metaports for simplicty x11-clocks/kdetoys4|x11-clocks/kdetoys-kde4|2018-02-10|Rename KDE4 metaports for simplicty x11-themes/kdeartwork4|x11-themes/kdeartwork-kde4|2018-02-10|Rename KDE4 metaports for simplicty x11/kdelibs4|x11/kdelibs-kde4|2018-02-10|Rename KDE4 metaports for simplicty devel/p5-Parse-Pidl||2018-02-10|Has expired: yes devel/rubygem-piston||2018-02-10|Has expired: No longer maintained upstream databases/postgresql92-server|databases/postgresql93-server|2018-02-10|Has expired: PostgreSQL 9.2 support has reached End-of-life. Please upgrade to a later version databases/postgresql92-client|databases/postgresql93-client|2018-02-10|Has expired: PostgreSQL 9.2 support has reached End-of-life. Please upgrade to a later version databases/postgresql92-contrib|databases/postgresql93-contrib|2018-02-10|Has expired: PostgreSQL 9.2 support has reached End-of-life. Please upgrade to a later version databases/postgresql92-docs|databases/postgresql93-docs|2018-02-10|Has expired: PostgreSQL 9.2 support has reached End-of-life. Please upgrade to a later version databases/postgresql92-pgtcl|databases/postgresql93-pgtcl|2018-02-10|Has expired: PostgreSQL 9.2 support has reached End-of-life. Please upgrade to a later version databases/postgresql92-plperl|databases/postgresql93-plperl|2018-02-10|Has expired: PostgreSQL 9.2 support has reached End-of-life. Please upgrade to a later version databases/postgresql92-plpython|databases/postgresql93-plpython|2018-02-10|Has expired: PostgreSQL 9.2 support has reached End-of-life. Please upgrade to a later version databases/postgresql92-pltcl|databases/postgresql93-pltcl|2018-02-10|Has expired: PostgreSQL 9.2 support has reached End-of-life. Please upgrade to a later version databases/pg_statsinfo||2018-02-10|Removed, only for PosgreSQL 9.2 databases/postgresql-repmgr2||2018-02-10|Removed, only for PostgreSQL 9.2 www/mod_security-devel|www/mod_security3|2018-02-12|Renamed, upstream has made a release devel/pear-channel-htmlpurifier|devel/pear-channel-htmlpurifier.org|2018-02-13|Rename for consistency games/lolcat|games/rubygem-lolcat|2018-02-13|Rename to match our rubygem- port naming net-mgmt/prometheus|net-mgmt/prometheus1|2018-02-14|Rename to include major version number in the portname textproc/rubygem-tidy||2018-02-14|Has expired: No longer needed and not maintained www/rubygem-scrapi||2018-02-14|Has expired: No longer maintained upstream devel/boost-python3-libs|devel/boost-python-libs@py36|2018-02-15|Flavorize net/quagga-esr|net/quagga|2018-02-15|Fixes available, go back to the regular quagga sysutils/krename-kde4|sysutils/krename|2018-02-16|Renamed to sysutils/krename net/grive|net/grive2|2018-02-17|Has expired: Unmaintained by upstream, use net/grive2 instead textproc/rubygem-sass-rails5|textproc/rubygem-sass-rails-rails4|2018-02-18|Rename to match our rubygem- port naming math/ufc||2018-02-18|Removed: No longer part of FEniCS, rolled into FFC devel/elixir-exrm||2018-02-19|Has expired: No longer maintained upstream devel/elixir-conform_exrm||2018-02-19|Has expired: No longer maintained upstream devel/elixir-sorted_set||2018-02-19|Has expired: No longer maintained upstream devel/elixir-red_black_tree||2018-02-19|Has expired: No longer maintained upstream emulators/wine-staging|emulators/wine-devel|2018-02-20|Broken for months, abandoned upstream misc/rubygem-dotenv-rails|misc/rubygem-dotenv-rails-rails4|2018-02-20|Rename to match our rubygem- port naming accessibility/kaccessible|accessibility/kaccessible-kde4|2018-02-22|Make room for KDE updates accessibility/jovie|accessibility/jovie-kde4|2018-02-22|Make room for KDE updates misc/libkdeedu|misc/libkdeedu-kde4|2018-02-22|Make room for KDE updates sysutils/kuser|sysutils/kuser-kde4|2018-02-22|Make room for KDE updates sysutils/nepomuk-widgets|sysutils/nepomuk-widgets-kde4|2018-02-22|Make room for KDE updates sysutils/nepomuk-core|sysutils/nepomuk-core-kde4|2018-02-22|Make room for KDE updates sysutils/baloo|sysutils/baloo-kde4|2018-02-22|Make room for KDE updates sysutils/kfilemetadata|sysutils/kfilemetadata-kde4|2018-02-22|Make room for KDE updates editors/kate-plugin-pate|editors/kate-plugin-pate-kde4|2018-02-22|Make room for KDE updates x11-clocks/ktux|x11-clocks/ktux-kde4|2018-02-22|Make room for KDE updates x11-clocks/amor|x11-clocks/amor-kde4|2018-02-22|Make room for KDE updates devel/smokeqt|devel/smokeqt-kde4|2018-02-22|Make room for KDE updates devel/smokegen|devel/smokegen-kde4|2018-02-22|Make room for KDE updates devel/p5-perlqt|devel/p5-perlqt-kde4|2018-02-22|Make room for KDE updates devel/smokekde|devel/smokekde-kde4|2018-02-22|Make room for KDE updates devel/ruby-qtruby|devel/ruby-qtruby-kde4|2018-02-22|Make room for KDE updates devel/p5-perlkde|devel/p5-perlkde-kde4|2018-02-22|Make room for KDE updates devel/ruby-krossruby|devel/ruby-krossruby-kde4|2018-02-22|Make room for KDE updates devel/py-pykde4|devel/py-pykde4-kde4|2018-02-22|Make room for KDE updates devel/py-krosspython|devel/py-krosspython-kde4|2018-02-22|Make room for KDE updates devel/py-pykdeuic4|devel/py-pykdeuic4-kde4|2018-02-22|Make room for KDE updates devel/ruby-korundum|devel/ruby-korundum-kde4|2018-02-22|Make room for KDE updates x11/kgamma|x11/kgamma-kde4|2018-02-22|Make room for KDE updates x11/libkonq|x11/libkonq-kde4|2018-02-22|Make room for KDE updates deskutils/superkaramba|deskutils/superkaramba-kde4|2018-02-22|Make room for KDE updates deskutils/kdeplasma-addons|deskutils/kdeplasma-addons-kde4|2018-02-22|Make room for KDE updates games/pairs|games/pairs-kde4|2018-02-22|Make room for KDE updates audio/kio-audiocd|audio/kio-audiocd-kde4|2018-02-22|Make room for KDE updates audio/kscd|audio/kscd-kde4|2018-02-22|Make room for KDE updates comms/kremotecontrol|comms/kremotecontrol-kde4|2018-02-22|Make room for KDE updates graphics/ksnapshot|graphics/ksnapshot-kde4|2018-02-22|Make room for KDE updates graphics/ksaneplugin|graphics/ksaneplugin-kde4|2018-02-22|Make room for KDE updates graphics/kqtquickcharts|graphics/kqtquickcharts-kde4|2018-02-22|Make room for KDE updates x11/kde4-baseapps|x11/kde-baseapps-kde4|2018-02-22|Make room for KDE updates x11/kde4-runtime|x11/kde-runtime-kde4|2018-02-22|Make room for KDE updates x11/kde4-workspace|x11/kde-workspace-kde4|2018-02-22|Make room for KDE updates print/kde4-print-manager|print/print-manager-kde4|2018-02-22|Make room for KDE updates x11-themes/kde4-base-artwork|x11-themes/kde-base-artwork-kde4|2018-02-22|Make room for KDE updates x11-themes/kde4-wallpapers|x11-themes/kde-wallpapers-kde4|2018-02-22|Make room for KDE updates x11-themes/kde4-wallpapers-freebsd|x11-themes/wallpapers-freebsd-kde4|2018-02-22|Make room for KDE updates sysutils/ksysguardd|sysutils/ksysguardd-kde4|2018-02-22|Make room for KDE updates x11/plasma-scriptengine-ruby|x11/plasma-scriptengine-ruby-kde4|2018-02-22|Make room for KDE updates x11/plasma-scriptengine-python|x11/plasma-scriptengine-python-kde4|2018-02-22|Make room for KDE updates misc/tpp||2018-02-23|Has expired: Depends on expired devel/ruby-ncurses net/raggle||2018-02-23|Has expired: Depends on expired devel/ruby-ncurses devel/ruby-ncurses||2018-02-23|Has expired: Marked BROKEN for more than 6 months math/octave-forge-octcdf||2018-02-24|No longer supported upstream math/octave-forge-pt_br||2018-02-24|No longer supported upstream devel/p5-Sys-Cpu|devel/p5-Sys-CPU|2018-02-27|Rename to match our p5- port naming net/eternaltcp|net/eternalterminal|2018-02-28|Renamed on the upstream author request databases/rubygem-flipper-active_record010||2018-02-28|Has expired: Use databases/rubygem-flipper-active_record instead devel/rubygem-blobstore_client||2018-02-28|Has expired: Only used by deprecated sysutils/rubygem-bosh_cli devel/rubygem-bosh-template||2018-02-28|Has expired: Only used by deprecated sysutils/rubygem-bosh_cli devel/rubygem-bosh_common||2018-02-28|Has expired: Only used by deprecated sysutils/rubygem-bosh_cli devel/rubygem-byebug9||2018-02-28|Has expired: Use devel/rubygem-byebug instead devel/rubygem-flipper010||2018-02-28|Has expired: Use devel/rubygem-flipper instead devel/rubygem-google-api-client010||2018-02-28|Has expired: Use devel/rubygem-google-api-client instead devel/rubygem-progressbar09||2018-02-28|Has expired: Only used by deprecated sysutils/rubygem-bosh_cli sysutils/rubygem-bosh_cli||2018-02-28|Has expired: Use net/bosh-cli (CLI v2) instead www/rubygem-gon-rails4||2018-02-28|Has expired: It is actually www/rubygem-gon with PKGNAMESUFFIX science/veusz|science/py-veusz|2018-03-01|Rename to match our py- port naming security/obfsproxy|security/py-obfsproxy-tor|2018-03-01|Rename to match our py- port naming devel/dotconf++||2018-03-02|Has expired: No upstream, not depend on in the ports tree emulators/gnuboy||2018-03-02|Has expired: Latest version is 1.0.5, older version does not fetch games/adgali||2018-03-02|Has expired: Mastersite disappeared games/tuxpuck||2018-03-02|Has expired: Mastersite disappeared japanese/migemo-emacs||2018-03-02|Has expired: Unmaintained math/clarence||2018-03-02|Has expired: Mastersite disappeared devel/cstringbuffer||2018-03-02|Has expired: Abandonware, no more upstream deskutils/charmap||2018-03-02|Has expired: Mastersite disappeared devel/afay||2018-03-02|Has expired: Abandonware, not used in the ports tree devel/alabastra||2018-03-02|Has expired: Abandonware, not used in the ports tree devel/adime||2018-03-02|Has expired: Abandonware, not used in the ports tree devel/boaconstructor||2018-03-02|Has expired: Abandonware, does not work with recent python/wxPython audio/amp||2018-03-02|Has expired: No more upstream devel/alf||2018-03-02|Has expired: Abandonware, unused in the ports tree net/remmina-plugin-gnome|net/remmina-plugin-secret|2018-03-04|Renamed upstream databases/php70-memcache|databases/php-memcache@php70|2018-03-08|Merge into a flavorized version databases/php71-memcache|databases/php-memcache@php71|2018-03-08|Merge into a flavorized version databases/php72-memcache|databases/php-memcache@php72|2018-03-08|Merge into a flavorized version ftp/php56-fastdfs|ftp/php-fastdfs@php56|2018-03-08|Merge into flavorized version ftp/php70-fastdfs|ftp/php-fastdfs@php70|2018-03-08|Merge into flavorized version ftp/php71-fastdfs|ftp/php-fastdfs@php71|2018-03-08|Merge into flavorized version ftp/php72-fastdfs|ftp/php-fastdfs@php72|2018-03-08|Merge into flavorized version www/unit-php56|www/unit-php@php56|2018-03-08|Merge into flavorized version www/unit-php70|www/unit-php@php70|2018-03-08|Merge into flavorized version www/unit-php71|www/unit-php@php71|2018-03-08|Merge into flavorized version www/unit-php72|www/unit-php@php72|2018-03-08|Merge into flavorized version databases/php70-memcached|databases/php-memcached|2018-03-08|Move to flavorized version www/openxmldir||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/hastymail2||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/dalbum||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/iwebcal||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/impresscms||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/freeway||2018-03-08|Has expired: Unmaintained upstream, all www files wrongly belongs to www user www/xaraya||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/subsonic||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/phpwebapp||2018-03-08|Has expired: Unmaintained upstream, all www files wrongly belongs to www user www/hastymail||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/b2evolution||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/textpattern||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/eventum||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/quickie||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/jinzora||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/zen-cart||2018-03-08|Has expired: Unmaintained, no upstream, all www files wrongly belongs to www user www/bblog||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/extjs||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/geeklog||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/lilurl||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/zikula||2018-03-08|Has expired: Unmaintained, no upstream, all www files wrongly belongs to www user www/yii||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/phpmp||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user www/lionwiki||2018-03-08|Has expired: Unmaintained, all www files wrongly belongs to www user databases/php-memcached|databases/pecl-memcached|2018-03-10|Remove duplicate port, use databases/pecl-memcached instead emulators/i386-wine-staging|emulators/i386-wine-devel|2018-03-10|Broken for months, abandoned upstream archivers/quazip-qt5|archivers/quazip@qt5|2018-03-11|Moved to a flavoured version devel/go-json-rest||2018-03-11|Go libraries aren't allowed (GH/ant0ine/go-json-rest) security/qtkeychain-qt4|security/qtkeychain@qt4|2018-03-12|Moved to a flavoured version security/qtkeychain-qt5|security/qtkeychain@qt5|2018-03-12|Moved to a flavoured version devel/libdbusmenu-qt5|devel/libdbusmenu-qt@qt5|2018-03-12|Moved to a flavoured version finance/electrum2|finance/electrum|2018-03-13|Has expired: Vulnerable legacy port, please use finance/electrum instead math/py-gsl|math/py-pygsl|2018-03-13|Rename to match PyPI naming www/mediawiki123|www/mediawiki127|2018-03-14|Has expired: Upstream no longer maintained www/mediawiki128|www/mediawiki130|2018-03-14|Has expired: Upstream no longer maintained sysutils/py-zfs||2018-03-16|Not needed since ZFS 28 net/freebsd-tftp||2018-03-16|Imported into base in FreeBSD 8.0 multimedia/plexpy|multimedia/tautulli|2018-03-17|Project renamed due to copyright infringement net-im/ring-daemon||2018-03-18|Ring can't build because it depends on custom bundled versions of other packages net-im/ring-libclient||2018-03-18|Ring can't build because it depends on custom bundled versions of other packages net-im/ring-gnome||2018-03-18|Ring can't build because it depends on custom bundled versions of other packages graphics/code-eli||2018-03-20|Has expired: Broken for more than 6 months databases/pg_rman||2018-03-20|Has expired: Broken for more than 6 months devel/elixir-simple_bayes||2018-03-20|Has expired: Broken for more than 6 months devel/elixir-stemmer||2018-03-20|Has expired: Broken for more than 6 months benchmarks/expedite||2018-03-20|Has expired: Broken for more than 6 months textproc/p5-HTML-CTPP2||2018-03-20|Has expired: Broken for more than 6 months textproc/rubygem-compass-rails||2018-03-20|Has expired: Broken for more than 6 months graphics/pfscalibration||2018-03-20|Deprecated: pfs-calibration is a part of pfstools (from version 2.0) graphics/pfstmo||2018-03-20|Deprecated: pfstmo is a part of pfstools games/timeseal||2018-03-22|Has expired: Abandoned, outdated, requires COMPAT_43 kernel option which was removed from GENERIC in FreeBSD 7.0 net-im/ktp-kded-integration-module|net-im/ktp-kded-integration-module-kde4|2018-03-23|Make room for KDE updates net-im/plasma-applet-ktp|net-im/plasma-applet-ktp-kde4|2018-03-23|Make room for KDE updates multimedia/gmencoder||2018-03-23|Abandonware, does not support modern codecs mail/wanderlust-devel|mail/wanderlust|2018-03-23|Removed, use mail/wanderlust instead lang/x10||2018-03-25|Has expired: Broken for more than 6 months science/siril|astro/siril|2018-03-25|Moved to a more appropriate category net/samba44|net/samba45|2018-03-26|Has expired: unsupported upstream mail/sisyphus||2018-03-26|Has expired: Never built www/fira-webfont||2018-03-26|Has expired: Unused with no apparent use case www/dummyflash||2018-03-26|Has expired: Unused, unmaintained, and obsolete devel/guikachu||2018-03-26|Has expired: Broken for more than 9 months www/npm4|www/npm|2018-03-31|Has expired: Use www/npm instead devel/lua-lpeg51|devel/lua-lpeg|2018-03-31|Has expired: Use devel/lua-lpeg instead net/p5-Net-Jaiku||2018-03-31|Has expired: Upstream disappeared and jaiku.com returns 404 www/py-django-devel|www/py-django|2018-03-31|Has expired: Outdated version. Use www/py-django instead security/rubygem-rpam2-3|security/rubygem-rpam2|2018-03-31|Has expired: Use security/rubygem-rpam2 instead textproc/rubygem-fast_xs073|textproc/rubygem-fast_xs|2018-03-31|Has expired: Use textproc/rubygem-fast_xs instead math/abacus||2018-04-03|Has expired: Unmaintained and has a broken shared library audio/muse||2018-04-03|Has expired: Unmaintained upstream, crashes at runtime net/paris-traceroute|net/scamper|2018-04-03|Has expired: Legacy paris-traceroute is not supported anymore. Use net/scamper instead net-im/cjc||2018-04-03|Has expired: Depends on expired net-im/py-xmpp net-im/py-pyxmpp||2018-04-03|Has expired: Obsoleted in favor of PyXMPP2 converters/php5-bsdconv|converters/php-bsdconv|2018-04-03|It supports PHP 7 since 11.5.0 converters/rubygem-bsdconv|converters/rubygem-ruby-bsdconv|2018-04-03|Rename to match our rubygem- port naming www/piwik|www/matomo|2018-04-06|Project renamed textproc/py-curator-py|textproc/py-elasticsearch-curator|2018-04-09|Follow existing Elasticsearch naming conventions sysutils/memtest|sysutils/memtester|2018-04-09|Use actual upstream name textproc/elasticsearch5-x-pack||2018-04-09|Use elasticsearch-plugin to install X-Pack textproc/kibana5-x-pack||2018-04-09|Use kibana-plugin to install X-Pack textproc/elasticsearch||2018-04-09|ElasticSearch 1.x End of Life textproc/elasticsearch-plugin-hq||2018-04-09|ElasticSearch 1.x End of Life textproc/elasticsearch-plugin-marvel||2018-04-09|ElasticSearch 1.x End of Life textproc/elasticsearch-plugin-migration||2018-04-09|ElasticSearch 1.x End of Life textproc/elasticsearch-plugin-sql||2018-04-09|ElasticSearch 1.x End of Life textproc/elasticsearch-river-rabbitmq||2018-04-09|ElasticSearch 1.x End of Life devel/libkgapi|devel/libkgapi-kde4|2018-04-11|Make room for KDE updates finance/libalkimia|finance/alkimia-qt4|2018-04-13|Project renamed security/py-zxcvbn-python|security/py-zxcvbn|2018-04-13|Renamed upstream devel/py-libusb115|devel/py-libusb1|2018-04-14|Unused and unmaintained upstream devel/qca-qt5|devel/qca@qt5|2018-04-14|Moved to a flavoured version devel/qjson-qt5|devel/qjson@qt5|2018-04-14|Moved to a flavoured version sysutils/polkit-qt5|sysutils/polkit-qt@qt5|2018-04-14|Moved to flavoured version multimedia/gstreamer1-qt4|multimedia/gstreamer1-qt@qt4|2018-04-14|Moved to a flavoured version multimedia/gstreamer1-qt5|multimedia/gstreamer1-qt@qt5|2018-04-14|Moved to a flavoured version www/mod_antiloris||2018-04-16|Apache 2.2 End of Life www/mod_auth_imap2||2018-04-16|Apache 2.2 End of Life www/mod_authn_sasl||2018-04-16|Apache 2.2 End of Life www/mod_bw||2018-04-16|Apache 2.2 End of Life www/mod_cband||2018-04-16|Apache 2.2 End of Life www/mod_clamav||2018-04-16|Apache 2.2 End of Life www/mod_extract_forwarded||2018-04-16|Apache 2.2 End of Life www/mod_hosts_access||2018-04-16|Apache 2.2 End of Life www/mod_log_config-st||2018-04-16|Apache 2.2 End of Life www/mod_log_mysql||2018-04-16|Apache 2.2 End of Life www/mod_log_sql2-dtc||2018-04-16|Apache 2.2 End of Life www/mod_macro22||2018-04-16|Apache 2.2 End of Life www/mod_musicindex||2018-04-16|Apache 2.2 End of Life www/mod_ntlm2||2018-04-16|Apache 2.2 End of Life www/mod_proxy_html||2018-04-16|Apache 2.2 End of Life www/mod_remoteip||2018-04-16|Apache 2.2 End of Life www/mod_spdy||2018-04-16|Apache 2.2 End of Life www/mod_uid||2018-04-16|Apache 2.2 End of Life www/mod_vhost_ldap||2018-04-16|Apache 2.2 End of Life www/mod_whatkilledus||2018-04-16|Apache 2.2 End of Life www/mod_xml2enc||2018-04-16|Apache 2.2 End of Life www/apache22||2018-04-16|Apache 2.2 End of Life www/mod_python33||2018-04-16|Apache 2.2 End of Life irc/xchat|irc/hexchat|2018-04-17|Has expired: Unmaintained upstream, use irc/hexchat instead irc/xchat-fish|irc/hexchat-fish|2018-04-17|Removed, master port irc/xchat expired irc/xchat-mircryption||2018-04-17|Removed, master port irc/xchat expired irc/xchat-ruby||2018-04-17|Removed, master port irc/xchat expired devel/subversion18|devel/subversion|2018-04-19|Has expired: EoL, use devel/subversion or devel/subversion19 math/rkward-kde4|math/rkward-kde|2018-04-21|No more specific to KDE4 devel/py-msgpack-python|devel/py-msgpack|2018-04-22|Upstream renamed package name on PyPI from msgpack-python to msgpack since 0.5 deskutils/py-pycarddav|www/pycarddav|2018-04-23|Remove dupplicate port x11-toolkits/qwt6-designerplugin||2018-04-25|Merged with x11-toolkits/qwt6 math/octave-forge-ocs||2018-04-25|Removed, depends on expired math/octave-forge-odepkg net/google-daemon|sysutils/py-google-compute-engine|2018-04-25|Has expired: Please use sysutils/py-google-compute-engine instead net/google-startup-scripts|sysutils/py-google-compute-engine|2018-04-25|Has expired: Please use sysutils/py-google-compute-engine instead math/octave-forge-odepkg||2018-04-25|Has expired, not a valid package for Octave version >= 4.2.1 devel/kdevelop-php|devel/kdevelop-php-kde4|2018-04-28|Make room for KDevelop upgrade devel/kdevelop-php-docs|devel/kdevelop-php-docs-kde4|2018-04-28|Make room for KDevelop upgrade devel/kdevplatform|devel/kdevplatform-kde4|2018-04-28|Make room for KDevelop upgrade lang/py-clojure_py||2018-04-30|Has expired: Upstream disappeared and it does not build with latest setuptools (39.0.1) textproc/rubygem-escape_utils-rails4|textproc/rubygem-escape_utils|2018-04-30|Has expired: Use textproc/rubygem-escape_utils instead databases/rubygem-seed-fu236|databases/rubygem-seed-fu|2018-05-01|Has expired: Obsoleted by update of www/gitlab. Please use databases/rubygem-seed-fu security/polarssl13||2018-05-01|Has expired: has reached end of life devel/tesla||2018-05-06|Outdated and almost certainly unused devel/llvm39||2018-05-08|Obsolete, no remaining dependencies textproc/p5-Spork||2018-05-09|Removed, depends on expired www/p5-Kwiki www/p5-Kwiki||2018-05-09|Has expired: All www files wrongly belongs to www user x11-servers/x11rdp|x11-drivers/xorgxrdp|2018-05-13|Obsoleted by update of net/xrdp net-p2p/btsync|net-p2p/rslsync|2018-05-13|Renamed by the vendor net-im/licq-msn||2018-05-14|MSN Messenger service terminated 2017-05-19 finance/gnucash@guile1||2018-05-14|Version 3.0 dropped guile1 support. Use unflavored finance/gnucash instead net-im/rubygem-earthquake||2018-05-15|Broken and unmaintained upstream security/rubygem-jugyo-twitter_oauth||2018-05-15|The only consumer of this port (net-im/rubygem-earthquake) has been removed sysutils/bareos-bat||2018-05-18|Removed, use sysutils/bareos-webui or install bareos16 ports www/p5-CGI_Lite|www/p5-CGI-Lite|2018-05-20|Rename to match upstream naming www/mod_proxy_uwsgi|www/apache24|2018-05-22|Module has been merged into Apache 2.4 devel/p5-reaper|devel/p5-Reaper|2018-05-22|Rename to match upstream naming textproc/py-pyelasticsearch||2018-05-22|Has expired: Not depended upon anymore net/corosync|net/corosync2|2018-05-24|There are now multiple versions of corosync net/pacemaker|net/pacemaker1|2018-05-24|There are now multiple versions of pacemaker editors/lazarus-lcl-gtk2|editors/lazarus|2018-05-25|Removed, no longer needed editors/lazarus-lcl-nogui||2018-05-25|Removed, no longer needed editors/lazarus-lcl-qt|editors/lazarus-qt4|2018-05-25|Removed, no longer needed editors/lazarus-lcl-qt5|editors/lazarus-qt5|2018-05-25|Removed, no longer needed editors/lazarus-lcl-units||2018-05-25|Removed, no longer needed net/bird-devel|net/bird2|2018-05-25|There are now multiple versions of bird devel/hs-BNFC||2018-05-25|Removed, no longer supported graphics/hs-HGL||2018-05-25|Removed, no longer supported devel/hs-DrIFT||2018-05-25|Removed, no longer supported devel/hs-hastache||2018-05-25|Removed, no longer supported devel/hs-monadplus||2018-05-25|Removed, no longer supported devel/hs-stm||2018-05-25|Removed, no longer supported devel/hs-text||2018-05-25|Removed, no longer supported science/hs-bio||2018-05-25|Removed, no longer supported textproc/hs-parsec||2018-05-25|Removed, no longer supported audio/calf|audio/calf-lv2|2018-05-27|Added -lv2 suffix: the port mostly provides LV2 plugins net/rubygem-gitaly-proto083|net/rubygem-gitaly-proto|2018-06-01|Has expired: Obsoleted by update of www/gitlab. Please use net/rubygem-gitaly-proto instead net/rubygem-gitaly-proto084|net/rubygem-gitaly-proto|2018-06-01|Has expired: Obsoleted by update of www/gitlab. Please use net/rubygem-gitaly-proto instead textproc/rubygem-github-linguist47|textproc/rubygem-github-linguist|2018-06-01|Has expired: Obsoleted by update of www/gitlab. Please use textproc/rubygem-github-linguist instead textproc/rubygem-loofah20|textproc/rubygem-loofah|2018-06-01|Has expired: Obsoleted by update of www/gitlab. Please use textproc/rubygem-loofah instead www/npm-node4|www/npm|2018-06-01|Has expired: Use www/npm instead emulators/qemu-launcher||2018-06-01|Has expired: Upstream is gone textproc/kibana3||2018-06-01|Has expired: End of Life was 2015-11-15, depends on expired www/node4 textproc/kibana41||2018-06-01|Has expired: End of Life was 2016-11-10, depends on expired www/node4 textproc/kibana43||2018-06-01|Has expired: End of Life was 2017-05-24, depends on expired www/node4 textproc/kibana44||2018-06-01|Has expired: End of Life was 2017-08-02, depends on expired www/node4 textproc/kibana45||2018-06-01|Has expired: End of Life was 2017-09-30, depends on expired www/node4 www/node4|www/node|2018-06-01|Has expired: Node.js v4.x reaches end-of-life on 2018-04-30, see https://github.com/nodejs/Release net/frr|net/frr4|2018-06-02|Will introduce multiple versions of frr lang/perl5.22|lang/perl5.26|2018-06-02|Has expired: Support ends three years after .0 release, please upgrade to a more recent version of Perl lang/sdcc-devel|lang/sdcc|2018-06-06|No longer useful net/py-pyldap|net/py-ldap|2018-06-06|Has expired: This code has merged back to python-ldap. Please use net/py-ldap instead biology/ssaha||2018-06-07|Has expired: Broken for more than 6 months biology/crux||2018-06-07|Has expired: Broken for more than 6 months biology/ariadne||2018-06-07|Has expired: Broken for more than 6 months cad/sceptre||2018-06-07|Has expired: Broken for more than 6 months cad/cider||2018-06-07|Has expired: Broken for more than 6 months chinese/scim-array||2018-06-07|Has expired: Broken for more than 6 months chinese/xpdf||2018-06-07|Has expired: Broken for more than 6 months chinese/telnet||2018-06-07|Has expired: Broken for more than 6 months comms/java-commapi-freebsd||2018-06-07|Has expired: Depends on BROKEN and expiring comms/java-commapi comms/soundmodem||2018-06-07|Has expired: Broken for more than 6 months comms/jsdr||2018-06-07|Has expired: Broken for more than 6 months comms/java-commapi||2018-06-07|Has expired: Broken for more than 6 months converters/pdf2djvu||2018-06-07|Has expired: Broken for more than 6 months databases/rdb||2018-06-07|Has expired: Broken for more than 6 months databases/animenfo-client||2018-06-07|Has expired: Broken for more than 6 months databases/ruby-mysql||2018-06-07|Has expired: Broken for more than 6 months databases/animenfo-client-gtk||2018-06-07|Has expired: Broken for more than 6 months databases/rdfdb||2018-06-07|Has expired: Broken for more than 6 months databases/riak2||2018-06-07|Has expired: Broken for more than 6 months devel/subversion-static||2018-06-07|Has expired: Broken for more than 6 months japanese/xgate||2018-06-07|Has expired: Broken for more than 6 months textproc/opengrm-ngram||2018-06-07|Has expired: Broken for more than 6 months textproc/ocaml-tyxml||2018-06-07|Has expired: Depends on BROKEN and expiring www/ocaml-net www/ocaml-net||2018-06-07|Has expired: Broken for more than 6 months audio/linux-genpuid||2018-06-07|Has expired: Broken for more than 6 months x11/enventor||2018-06-07|Has expired: Broken for more than 6 months audio/xmms-timidity||2018-06-07|Has expired: Broken for more than 6 months audio/kaudiocreator||2018-06-07|Has expired: Broken for more than 6 months audio/jxm||2018-06-07|Has expired: Depends on BROKEN and expiring comms/java-commapi audio/deforaos-mixer||2018-06-07|Has expired: Broken for more than 6 months audio/gkrellmss2||2018-06-07|Has expired: Broken for more than 6 months audio/ogg2mp3||2018-06-07|Has expired: Broken for more than 6 months audio/abcmidi||2018-06-07|Has expired: Broken for more than 6 months benchmarks/netpipe||2018-06-07|Has expired: Broken for more than 6 months biology/plink||2018-06-07|Has expired: Broken for more than 6 months science/orthanc||2018-06-07|Has expired: Broken for more than 3 months science/orthanc-dicomweb||2018-06-07|Removed, depends on expired science/orthanc science/orthanc-postgresql||2018-06-07|Removed, depends on expired science/orthanc science/orthanc-webviewer||2018-06-07|Removed, depends on expired science/orthanc graphics/libkface||2018-06-09|Has expired: No longer maintained upstream math/scilab-toolbox-sivp||2018-06-09|Has expired: Cannot build with newer opencv math/clipper|graphics/polyclipping|2018-06-11|Duplicate port chinese/unrar|archivers/unrar|2018-06-13|Has expired: Use archivers/unrar instead devel/automake-wrapper|devel/automake|2018-06-14|No longer needed net/samba45|net/samba46|2018-06-14|Has expired: yes textproc/py-elasticsearch-dsl-py||2018-06-15|Has expired: ElasticSearch 1.x End of Life textproc/py-elasticsearch2-dsl-py||2018-06-15|Has expired: Needs Python ElasticSearch 2.x textproc/elasticsearch2-plugin-marvel||2018-06-15|Removed, depends on expired textproc/elasticsearch2 textproc/elasticsearch2-plugin-sql||2018-06-15|Removed, depends on expired textproc/elasticsearch2 textproc/elasticsearch2-plugin-hq||2018-06-15|Removed, depends on expired textproc/elasticsearch2 textproc/elasticsearch2-plugin-migration||2018-06-15|Removed, depends on expired textproc/elasticsearch2 textproc/elasticsearch2||2018-06-15|Has expired: Elastic 2.4 EoL is 2018-02-28 net-im/imspector||2018-06-16|Has expired: No active upstream, master site disappeared long ago net/syncthing-discosrv|net/syncthing|2018-06-18|Has expired: Included in net/syncthing now net/syncthing-inotify|net/syncthing|2018-06-18|Has expired: Included in net/syncthing now net/syncthing-cli|net/syncthing|2018-06-18|Has expired: Included in net/syncthing now x11-themes/adwaita-common||2018-06-19|Move to flavored version x11-themes/adwaita-qt4|x11-themes/adwaita-qt@qt4|2018-06-19|Move to flavored version x11-themes/adwaita-qt5|x11-themes/adwaita-qt@qt5|2018-06-19|Move to flavored version net-p2p/qbittorrent-nox11|net-p2p/qbittorrent@nox|2018-06-20|Moved to a flavored version math/digitizer|graphics/engauge-digitizer|2018-06-20|The previously deleted port math/digitizer is now graphics/engauge-digitizer multimedia/qt5-phonon4|multimedia/phonon@qt5|2018-06-21|Moved to a flavored version multimedia/qt5-phonon4-designerplugin|multimedia/phonon-designerplugin@qt5|2018-06-21|Moved to a flavored version multimedia/qt5-phonon4-gstreamer|multimedia/phonon-gstreamer@qt5|2018-06-21|Moved to a flavored version multimedia/qt5-phonon4-vlc|multimedia/phonon-vlc@qt5|2018-06-21|Moved to a flavored version net/libproxy-gnome|net/libproxy-gnome2|2018-06-22|Renamed to make slave names consistent www/npapi-vlc||2018-06-22|Removed, depends on expired www/libxul www/libxul||2018-06-22|Has expired: NPAPI are no longer supported mail/postfix211||2018-06-24|Has expired: Not supported anymore by vendor. Please choose a new one version mail/postfix211-sasl||2018-06-24|Has expired: Not supported anymore by vendor. Please choose a new one version devel/py-binplist||2018-06-26|Has expired: Not depended upon anymore, no longer maintained upstream devel/bats|devel/bats-core|2018-07-01|Bats maintainership changed upstream to bats-core team net/rubygem-omniauth-twitter12|net/rubygem-omniauth-twitter|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use net/rubygem-omniauth-twitter instead net/rubygem-gitaly-proto088|net/rubygem-gitaly-proto|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use net/rubygem-gitaly-proto instead net/rubygem-octokit46|net/rubygem-octokit|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use net/rubygem-octokit instead net/rubygem-fog-google0|net/rubygem-fog-google|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use net/rubygem-fog-google instead net/rubygem-fog-aws1|net/rubygem-fog-aws|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use net/rubygem-fog-aws instead textproc/rubygem-asciidoctor-plantuml007|textproc/rubygem-asciidoctor-plantuml|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use textproc/rubygem-asciidoctor-plantuml instead graphics/mitsuba||2018-07-03|Has expired: Broken for more than 6 months mail/p5-Net-SMTP-SSL||2018-07-03|Has expired: Deprecated by upstream, use Net::SMTP instead www/rubygem-kubeclient22|www/rubygem-kubeclient|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use www/rubygem-kubeclient instead security/rubygem-doorkeeper42|security/rubygem-doorkeeper|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use security/rubygem-doorkeeper instead security/rubygem-net-ssh41|security/rubygem-net-ssh|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use security/rubygem-net-ssh instead security/rubygem-omniauth-saml17|security/rubygem-omniauth-saml|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use security/rubygem-omniauth-saml instead security/rubygem-doorkeeper-openid_connect12|security/rubygem-doorkeeper-openid_connect|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use security/rubygem-doorkeeper-openid_connect instead security/rubygem-attr_encrypted30|security/rubygem-attr_encrypted|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use security/rubygem-attr_encrypted instead security/rubygem-omniauth14|security/rubygem-omniauth|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use security/rubygem-omniauth instead devel/rubygem-flipper011|devel/rubygem-flipper|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use devel/rubygem-flipper instead devel/rubygem-ruby-prof016|devel/rubygem-ruby-prof|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use devel/rubygem-ruby-prof instead devel/rubygem-recursive-open-struct10|devel/rubygem-recursive-open-struct|2018-07-03|Has expired: Obsoleted by update of www/rubygem-kubeclient. Please use devel/rubygem-recursive-open-struct instead devel/rubygem-flipper-active_support_cache_store011|devel/rubygem-flipper-active_support_cache_store|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use devel/rubygem-flipper-active_support_cache_store instead devel/rubygem-gettext_i18n_rails_js12|devel/rubygem-gettext_i18n_rails_js|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use devel/rubygem-gettext_i18n_rails_js instead devel/phpunit|devel/phpunit6|2018-07-03|Has expired: No longer maintained upstream devel/rubygem-recursive-open-struct100|devel/rubygem-recursive-open-struct|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use devel/rubygem-recursive-open-struct instead databases/rubygem-flipper-active_record011|databases/rubygem-flipper-active_record|2018-07-03|Has expired: Obsoleted by update of www/gitlab. Please use databases/rubygem-flipper-active_record instead databases/mongodb34-rocks||2018-07-03|Has expired: Broken for more than 6 months math/freemat||2018-07-03|Has expired: Complex, unmaintained software with obsolete dependencies dns/bind99|dns/bind911|2018-07-04|Has expired: Going out of support, please migrate to dns/bind911 dns/bind910|dns/bind911|2018-07-04|Has expired: Going out of support, please migrate to dns/bind911 www/gitlab|www/gitlab-ce|2018-07-04|Port renamed to match name on gitlab.org devel/rubygem-oj2|devel/rubygem-oj|2018-07-04|Has expired: Obsoleted by update of www/gitlab. Please use devel/rubygem-oj instead net-mgmt/sx||2018-07-08|Has expired: Upstream gone, does not fetch www/sxweb||2018-07-08|Removed, web frontend of net-mgmt/sx, upstream also gone sysutils/logstash|sysutils/logstash5|2018-07-10|Has expired: End of Life was 2018-02-28 textproc/kibana46|textproc/kibana5|2018-07-10|Has expired: End of Life was 2018-02-28 print/cups-connector|print/cloud-print-connector|2018-07-11|Project renamed upstream net/wpa_gui|net/wpa_supplicant_gui|2018-07-12|Rename to wpa_supplicant_gui for ease of search lang/gcc47|lang/gcc6|2018-07-15|Has expired: Unsupported by upstream. Use GCC 6 or newer instead net-p2p/transmission-qt4|net-p2p/transmission-qt@qt4|2018-07-15|Moved into flavored version net-p2p/transmission-qt5|net-p2p/transmission-qt@qt5|2018-07-15|Moved into flavored version java/jaf||2018-07-16|Included in JRE since 1.6 version net/p5-ZConf-Bookmarks||2018-07-16|Has expired: Unmaintained net/p5-ZConf||2018-07-16|Has expired: Unmaintained textproc/p5-Text-SpellChecker-GUI||2018-07-16|Has expired: Unmaintained deskutils/p5-ZConf-Runner-GUI-GTK||2018-07-16|Has expired: Unmaintained deskutils/p5-ZConf-BGSet||2018-07-16|Has expired: Unmaintained deskutils/p5-ZConf-Runner||2018-07-16|Has expired: Unmaintained graphics/p5-Image-Size-FillFullSelect||2018-07-16|Has expired: Unmaintained graphics/p5-Imager-AverageGray||2018-07-16|Has expired: Unmaintained mail/p5-Mail-IMAPTalk-MailCache||2018-07-16|Has expired: Unmaintained mail/p5-ZConf-Mail||2018-07-16|Has expired: Unmaintained mail/p5-Mail-Cache||2018-07-16|Has expired: Unmaintained www/p5-ZConf-RSS||2018-07-16|Has expired: Unmaintained www/p5-ZConf-RSS-GUI-GTK||2018-07-16|Has expired: Unmaintained devel/p5-ZConf-GUI||2018-07-16|Has expired: Unmaintained net-im/mastodon||2018-07-16|Has expired: Breaks too frequently x11-fm/p5-PerlFM||2018-07-16|Has expired: Unmaintained astro/p5-ZConf-Weather||2018-07-16|Has expired: Unmaintained sysutils/p5-ZConf-Cron||2018-07-16|Has expired: Unmaintained x11-fonts/hasklig|x11-fonts/Hasklig|2018-07-16|Name correctly after upstream misc/artikulate-kde4||2018-07-17|Has expired: broken for more than three years vietnamese/kde4-l10||2018-07-17|Has expired: broken for more than three years graphics/projectm-libvisual|graphics/libprojectm|2018-07-17|Code of projectm-libvisual was merged into graphics/libprojectm graphics/yafray|graphics/yafaray|2018-07-20|Project renamed lang/spec.alpha||2018-07-21|Unused in the ports tree sysutils/xen-tools|sysutils/xen-tools47|2018-07-23|Renamed to support multiple versions emulators/xen-kernel|emulators/xen-kernel47|2018-07-23|Renamed to support multiple versions emulators/xen||2018-07-23|Removed to support multiple versions devel/py-levenshtein|devel/py-python-Levenshtein|2018-07-28|Remove the duplicate comms/xwota||2018-07-28|Has expired: No server message and no upstream releases audio/glame||2018-07-28|Has expired: Does not build net/isc-dhcp43-relay|net/isc-dhcp44-relay|2018-07-31|Has expired: Please upgrade to isc-dhcp44 net/isc-dhcp43-server|net/isc-dhcp44-server|2018-07-31|Has expired: Please upgrade to isc-dhcp44 net/isc-dhcp43-client|net/isc-dhcp44-client|2018-07-31|Has expired: Please upgrade to isc-dhcp44 x11/bigreqsproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/compositeproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/damageproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/dmxproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/dri2proto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/dri3proto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/fixesproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/glproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/inputproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/kbproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/presentproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/printproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/randrproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/recordproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/renderproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/resourceproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/scrnsaverproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/trapproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/videoproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/xcmiscproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/xextproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/xf86dgaproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/xf86driproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/xf86miscproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/xf86rushproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/xf86vidmodeproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/xineramaproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/xproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/xproxymanagementprotocol|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11-fonts/fontcacheproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11-fonts/fontsproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11-fonts/xf86bigfontproto|x11/xorgproto|2018-07-31|merged into x11/xorgproto x11/evieext|x11/xorgproto|2018-08-01|merged into x11/xorgproto net/rubygem-gitaly-proto096|net/rubygem-gitaly-proto|2018-08-02|Has expired: Obsoleted by update of www/gitlab-ce. Please use net/rubygem-gitaly-proto instead security/tripwire12||2018-08-02|Has expired: unfetchable security/rubygem-rbnacl4|security/rubygem-rbnacl|2018-08-02|Has expired: Obsoleted by update of www/gitlab-ce. Please use security/rubygem-rbnacl instead www/rubygem-gon61|www/rubygem-gon|2018-08-02|Has expired: Obsoleted by update of www/gitlab-ce. Please use www/rubygem-gon instead databases/pgpool-II-33|databases/pgpool-II-35|2018-08-02|Has expired: Will be deprecated by upstream, please switch to newer pgpool versions devel/rubygem-grape-entity060|devel/rubygem-grape-entity|2018-08-02|Has expired: Obsoleted by update of www/gitlab-ce. Please use devel/rubygem-grape-entity instead net/rubygem-gitaly-proto099|net/rubygem-gitaly-proto|2018-08-02|Has expired: Obsoleted by update of www/gitlab-ce. Please use net/rubygem-gitaly-proto instead net/rubygem-gitaly-proto095|net/rubygem-gitaly-proto|2018-08-02|Has expired: Obsoleted by update of www/gitlab-ce. Please use net/rubygem-gitaly-proto instead net/rubygem-omniauth-github11|net/rubygem-omniauth-github|2018-08-02|Has expired: Obsoleted by update of www/gitlab-ce. Please use net/rubygem-omniauth-github instead net/rubygem-asset_sync220|net/rubygem-asset_sync|2018-08-02|Has expired: Obsoleted by update of www/gitlab-ce. Please use net/rubygem-asset_sync instead www/rubygem-gollum-lib-gitlab|www/rubygem-gitlab-gollum-lib|2018-08-02|Has expired: Obsoleted by update of www/gitlab-ce. Please use www/rubygem-gitlab-gollum-lib instead www/py-django-threaded-multihost||2018-08-02|Has expired: Project development unmaintained www/py-django-keyedcache||2018-08-02|Has expired: Project development abandoned www/py-django-signals-ahoy||2018-08-02|Has expired: Project development unmaintained databases/rubygem-redis-namespace15|databases/rubygem-redis-namespace|2018-08-02|Has expired: Obsoleted by update of www/gitlab-ce. Please use databases/rubygem-redis-namespace instead security/py-python-social-auth||2018-08-02|Has expired: Upstream Deprecated www/py-django-social-auth||2018-08-02|Has expired: no support for new django audio/libmusicbrainz3|audio/libmusicbrainz5|2018-08-03|Has expired: Web Service 1.0 support ending 2018-08-01 emulators/snes9x||2018-08-03|Removed: Please use emulators/snes9x-gtk instead of emulators/snes9express||2018-08-03|Please use emulators/snes9x-gtk instead security/rubygem-omniauth-shibboleth12||2018-08-04|Removed textproc/rubygem-html-pipeline-gitlab||2018-08-04|Removed net/qmdnsengine|dns/qmdnsengine|2018-08-04|Move to a proper category security/shibboleth2-sp|security/shibboleth-sp|2018-08-07|Project updated to version 3, so the 2 suffix is not valid anymore security/opensaml2|security/opensaml|2018-08-07|Project updated to version 3, so the 2 suffix is not valid anymore devel/lldb38|devel/llvm38|2018-08-08|METAPORT removed lang/clang38|devel/llvm38|2018-08-08|METAPORT removed science/py-tensorflow||2018-08-08|Has expired: build broken devel/bazel-clang38|devel/bazel|2018-08-08|Slave port depends on obsolete LLVM version security/libbeid|security/beid|2018-08-12|No longer just a library editors/joe2|editors/joe|2018-08-12|Patches from editors/joe2 have been integrated into editors/joe security/keepassx||2018-08-13|Has expired: Use keepassx2 or keepassxc instead devel/llvm33|devel/llvm60|2018-08-13|Obsolete and unmaintained lang/clang33|devel/llvm60|2018-08-13|Obsolete and unmaintained devel/llvm34|devel/llvm60|2018-08-13|Obsolete and unmaintained lang/clang34|devel/llvm60|2018-08-13|Obsolete and unmaintained databases/mongodb|databases/mongodb34|2018-08-15|Has expired: End of Life October 2016 net/traceroute||2018-08-16|Has expired: Upstream gone net/e169-stats||2018-08-16|Has expired: unknown license net/l4ip||2018-08-16|Has expired: unknown license net/dhcprelay||2018-08-16|Has expired: unknown license emulators/m2000||2018-08-16|Has expired: unknown license textproc/ant-xinclude-task||2018-08-16|Has expired: unknown license textproc/bomstrip||2018-08-16|Has expired: unknown license x11-fonts/ecofont||2018-08-16|Has expired: unknown license mail/roundcube-groupvice||2018-08-16|Has expired: unknown license security/pft||2018-08-16|Has expired: unknown license devel/kickassembler||2018-08-16|Has expired: unknown license devel/gdbmods||2018-08-16|Has expired: unknown license devel/as31||2018-08-16|Has expired: unknown license databases/dbf2mysql||2018-08-16|Has expired: unknown license misc/xpns||2018-08-16|Has expired: unknown license misc/amfm||2018-08-16|Has expired: unknown license games/smashbattle||2018-08-16|Has expired: unknown license games/syobon||2018-08-16|Has expired: unknown license games/optimax||2018-08-16|Has expired: unknown license games/xgospel||2018-08-16|Has expired: unknown license biology/blat||2018-08-16|Has expired: unknown license x11-clocks/swisswatch||2018-08-16|Has expired: unknown license palm/ppmtoTbmp||2018-08-16|Has expired: unknown license dns/ghtool||2018-08-16|Has expired: unknown license x11-themes/beastie||2018-08-16|Has expired: unknown license converters/uudx||2018-08-16|Has expired: unknown license sysutils/areca-cli||2018-08-16|Has expired: unknown license net-im/tox12|net-im/tox|2018-08-18|Unused www/moodle32|www/moodle33|2018-08-19|Has expired: Deprecated by upstream archivers/opkg|archivers/opkg-openwrt|2018-08-20|Better naming net/openmq||2018-08-21|Has expired: Broken for more than 5 months net/coda6_server||2018-08-21|Has expired: Broken for more than 5 months net/ceph-devel||2018-08-21|Has expired: Broken for more than 5 months java/jgrapht||2018-08-21|Has expired: Broken for more than 5 months mail/mutt14||2018-08-21|Has expired: mutt 1.4.x has been out of support for 10+ years use mail/mutt www/pydio||2018-08-21|Has expired: Broken for more than 5 months security/fastd-devel||2018-08-21|Has expired: Broken for more than 5 months security/fastd||2018-08-21|Has expired: Broken for more than 5 months devel/bhyve-vm-goagent||2018-08-21|Has expired: Broken for more than 5 months devel/cherivis-devel||2018-08-21|Has expired: Depends on broken and expiring cheritrace-devel devel/cheritrace-devel||2018-08-21|Has expired: Broken for more than 5 months devel/javolution||2018-08-21|Has expired: Broken for more than 5 months devel/bisoncpp||2018-08-21|Has expired: Depends on broken and expiring libbobcat databases/php5-pdo_cassandra||2018-08-21|Has expired: Broken for more than 5 months games/crafty-open-large||2018-08-21|Has expired: Broken for more than 5 months games/crafty-open-enormous||2018-08-21|Has expired: Broken for more than 5 months games/crafty-open-medium||2018-08-21|Has expired: Broken for more than 5 months math/jakarta-commons-math||2018-08-21|Has expired: Broken for more than 5 months math/hfst||2018-08-21|Has expired: Broken for more than 5 months math/octave-forge-communications||2018-08-21|Has expired: Broken for more than 5 months lang/v8-devel||2018-08-21|Has expired: Broken for more than 5 months sysutils/rubygem-fluentd010||2018-08-21|Has expired: Broken for more than 5 months mail/mutt14-lite||2018-08-21|Remove expired slave port net/coda6_client||2018-08-21|Remove expired slave port net/openmq-client||2018-08-21|Remove expired slave port net-p2p/twister||2018-08-21|Has expired: Broken for more than 5 months comms/usrp||2018-08-21|Has expired: Broken for more than 5 months devel/libbobcat||2018-08-21|Has expired: Broken for more than 5 months net-p2p/dogecoin||2018-08-21|Has expired: Broken for more than 5 months misc/freebsd-doc-sr||2018-08-23|Removed www/py-django18|www/py-django111|2018-08-25|Has expired: End of Live since 01/04/2018 x11-themes/qt4-style-Kvantum|x11-themes/Kvantum@qt4|2018-08-26|Moved to flavored version x11-themes/qt5-style-Kvantum|x11-themes/Kvantum@qt5|2018-08-26|Moved to flavored version devel/gps||2018-08-28|Has expired: Depends on obsolete LLVM 3.8. net-mgmt/ocsinventory-ng|net-mgmt/ocsinventory-server|2018-08-26|split port www/py-buku|www/buku|2018-09-01|Moved to correct directory, port is not a python library math/rpy2|math/py-rpy2|2018-09-01|Moved to correct directory, this is a python library games/libdungeonmaker||2018-09-02|Has expired: Abandonware. Unused in the ports tree net-p2p/lopster||2018-09-02|Has expired: Unmaintained. Napster is dead audio/napster||2018-09-02|Has expired: Unmaintained. Napster and OpenNap are dead net-p2p/xnap||2018-09-02|Has expired: Unmaintained. Napster, OpenNap, and FastTrack are dead russian/napster||2018-09-02|Has expired: Unmaintained. Napster and OpenNap are dead devel/mico||2018-09-02|Has expired: unmaintained upstream and unused in the ports tree net/rubygem-gitlab_omniauth-ldap1|net/rubygem-gitlab_omniauth-ldap|2018-09-02|Has expired: Use net/rubygem-gitlab_omniauth-ldap instead devel/onscripter|games/onscripter|2018-09-03|Moved to better category devel/onscripter-1byte|games/onscripter-1byte|2018-09-03|Moved to better category devel/ponscripter-sekai|games/ponscripter-sekai|2018-09-03|Moved to better category devel/renpy|games/renpy|2018-09-03|Moved to better category devel/renpy6|games/renpy6|2018-09-03|Moved to better category devel/rlvm|games/rlvm|2018-09-03|Moved to better category dns/openmdns|net/openmdns|2018-09-03|Moved to better category www/hs-activehs||2018-09-03|Has expired: Doesn't build with recent dependencies science/mpqc-mpich|science/mpqc|2018-09-03|MPI option is enabled by default in mpqc, no need for mpqc-mpich misc/timediff|misc/tzdiff|2018-09-04|Project was renamed www/rubygem-hamlit26|www/rubygem-hamlit|2018-09-06|Has expired: Obsolete by gitlab-ce 11.2.x update, please use www/rubygem-hamlit instead games/ppracer|games/etracer|2018-09-10|Has expired: Unmaintained. Play games/etracer instead www/py-django-livesettings||2018-09-13|Has expired: Missing dependency on removed www/py-django-keyedcache www/bookmarkbridge||2018-09-16|Has expired: Unmaintained. Unlikely to work correctly with modern browsers mail/annoyance-filter||2018-09-16|Has expired: Unmaintained upstream mail/pop3vscan||2018-09-16|Has expired: Unmaintained upstream audio/firefly|audio/forked-daapd|2018-09-16|Has expired: Unmaintained. Use audio/forked-daapd instead www/hs-hS3||2018-09-16|Has expired: Not being developed upstream converters/hs-dataenc||2018-09-16|Has expired: Not being developed upstream devel/tinyq||2018-09-16|Has expired: Unmaintained upstream and unused in the ports tree devel/hs-hashed-storage||2018-09-16|Has expired: Not being developed upstream www/py-searx|www/searx|2018-09-16|Move to a proper directory: this is a server, not a library net/syndication|net/kf5-syndication|2018-09-17|Has become a proper KDE framework x11-wm/swm||2018-09-21|Has expired: upstream no longer maintained, the screen turns black after starting swm graphics/OpenEXR|graphics/openexr|2018-09-22|Renamed to match upstream distribution's lower-case name math/mtl||2018-09-27|Has expired: fails to fetch: mastersite times out dns/dnscrypt-proxy|dns/dnscrypt-proxy2|2018-09-27|Has expired: Deprecated by upstream, use dns/dnscrypt-proxy2 instead +www/waterfox||2018-09-29|Has expired: experiment ended: unsustainable diff --git a/www/Makefile b/www/Makefile index 6e033c876c1c..414b426e7b61 100644 --- a/www/Makefile +++ b/www/Makefile @@ -1,2593 +1,2592 @@ # $FreeBSD$ # COMMENT = Ports related to the World Wide Web SUBDIR += R-cran-RgoogleMaps SUBDIR += R-cran-Rook SUBDIR += R-cran-crosstalk SUBDIR += R-cran-downloader SUBDIR += R-cran-htmlwidgets SUBDIR += R-cran-httpuv SUBDIR += R-cran-httr SUBDIR += R-cran-rvest SUBDIR += R-cran-scrapeR SUBDIR += R-cran-selectr SUBDIR += R-cran-shiny SUBDIR += Stikked SUBDIR += UniversalFeedCreator SUBDIR += WebMagick SUBDIR += ach SUBDIR += adzap SUBDIR += alef-webfont SUBDIR += amphetadesk SUBDIR += analog SUBDIR += anyremote2html SUBDIR += anyterm SUBDIR += apache-forrest SUBDIR += apache-mode.el SUBDIR += apache24 SUBDIR += apercu SUBDIR += archiva SUBDIR += aria2 SUBDIR += aria2fe SUBDIR += asql SUBDIR += asterisk-stat SUBDIR += atutor SUBDIR += august SUBDIR += awffull SUBDIR += aws SUBDIR += aws-demos SUBDIR += awstats SUBDIR += axis SUBDIR += axis2 SUBDIR += bacula-web SUBDIR += baikal SUBDIR += bareos-webui SUBDIR += bareos16-webui SUBDIR += bigbluebutton SUBDIR += bins SUBDIR += bkmrkconv SUBDIR += blastbeat SUBDIR += blogsum SUBDIR += bluefish SUBDIR += boa SUBDIR += bolt SUBDIR += bozohttpd SUBDIR += buku SUBDIR += butterfly SUBDIR += c-icap SUBDIR += c-icap-modules SUBDIR += cadaver SUBDIR += caddy SUBDIR += calamaris SUBDIR += calamaris-devel SUBDIR += caldavzap SUBDIR += calendarserver SUBDIR += carbonapi SUBDIR += castget SUBDIR += cblog SUBDIR += cgi-lib SUBDIR += cgi-lib.pl SUBDIR += cgicc SUBDIR += cgichk SUBDIR += cgihtml SUBDIR += cgiparse SUBDIR += cgiwrap SUBDIR += checkbot SUBDIR += chems SUBDIR += cherokee SUBDIR += choqok SUBDIR += choqok-kde4 SUBDIR += chpasswd SUBDIR += chromium SUBDIR += ckeditor SUBDIR += cl-lml SUBDIR += cl-lml-sbcl SUBDIR += claroline SUBDIR += clearsilver SUBDIR += clearsilver-python SUBDIR += closure-compiler SUBDIR += cmsmadesimple SUBDIR += cntlm SUBDIR += codeigniter SUBDIR += coppermine SUBDIR += cplanet SUBDIR += cppcms SUBDIR += cpr SUBDIR += crawl SUBDIR += crp SUBDIR += css-mode.el SUBDIR += cssed SUBDIR += csso SUBDIR += csstidy SUBDIR += ctemplate SUBDIR += cutelyst SUBDIR += cutycapt SUBDIR += davical SUBDIR += davix SUBDIR += dddbl SUBDIR += ddgr SUBDIR += decss SUBDIR += deforaos-surfer SUBDIR += demoroniser SUBDIR += dfileserver SUBDIR += dhttpd SUBDIR += dillo2 SUBDIR += dojo SUBDIR += dojo-shrinksafe SUBDIR += dokuwiki SUBDIR += domoticz SUBDIR += dotproject SUBDIR += drood SUBDIR += drraw SUBDIR += drupal7 SUBDIR += drupal7-wysiwyg SUBDIR += drupal8 SUBDIR += drush SUBDIR += dtse SUBDIR += e107 SUBDIR += e2guardian SUBDIR += edbrowse SUBDIR += efront SUBDIR += elgg SUBDIR += elinks SUBDIR += elixir-html_entities SUBDIR += elixir-html_sanitize_ex SUBDIR += elixir-httpoison SUBDIR += elixir-httpotion SUBDIR += elixir-joken SUBDIR += elixir-maru SUBDIR += elixir-phoenix SUBDIR += elixir-phoenix_ecto SUBDIR += elixir-phoenix_html SUBDIR += elixir-phoenix_pubsub SUBDIR += elixir-webassembly SUBDIR += emacs-w3m SUBDIR += encode-explorer SUBDIR += entrans SUBDIR += ephemera SUBDIR += epiphany SUBDIR += erlang-cowboy SUBDIR += erlang-cowlib SUBDIR += erlang-hackney SUBDIR += erlang-ibrowse SUBDIR += erlang-mochiweb SUBDIR += erlang-mochiweb-basho SUBDIR += erlang-webmachine SUBDIR += erwn SUBDIR += fabio SUBDIR += falkon SUBDIR += fancybox SUBDIR += faup SUBDIR += fcgi SUBDIR += fcgiwrap SUBDIR += feedjack SUBDIR += ffproxy SUBDIR += fgallery SUBDIR += firefox SUBDIR += firefox-esr SUBDIR += firefox-esr-i18n SUBDIR += firefox-i18n SUBDIR += flashplayer SUBDIR += flat-frog SUBDIR += flickcurl SUBDIR += flood SUBDIR += flot SUBDIR += fluxbb SUBDIR += fnord SUBDIR += formication SUBDIR += foswiki SUBDIR += fpc-fastcgi SUBDIR += fpc-googleapi SUBDIR += fpc-httpd22 SUBDIR += fpc-httpd24 SUBDIR += fpc-libmicrohttpd SUBDIR += free-sa-devel SUBDIR += fswiki SUBDIR += ftasv SUBDIR += g-cows SUBDIR += g-gcl SUBDIR += gaeutilities SUBDIR += gallery2 SUBDIR += gallery3 SUBDIR += gatling SUBDIR += gecko-mediaplayer SUBDIR += geckodriver SUBDIR += geeknote SUBDIR += geneweb SUBDIR += geolizer SUBDIR += geronimo SUBDIR += get_flash_videos SUBDIR += getleft SUBDIR += gist SUBDIR += gitea SUBDIR += gitlab-ce SUBDIR += gitlab-pages SUBDIR += gitlab-workhorse SUBDIR += glassfish SUBDIR += glpi SUBDIR += gnome-user-share SUBDIR += gnome-web-photo SUBDIR += go-appengine-sdk SUBDIR += go-fasthttp SUBDIR += go-www SUBDIR += gobuffalo SUBDIR += gohugo SUBDIR += google-appengine SUBDIR += google-sitemapgen SUBDIR += googlebook_dl SUBDIR += googler SUBDIR += goose SUBDIR += gotty SUBDIR += gpx2map SUBDIR += grafana SUBDIR += grafana2 SUBDIR += grafana3 SUBDIR += grafana4 SUBDIR += grafana5 SUBDIR += grails SUBDIR += gregarius SUBDIR += groupoffice SUBDIR += grr SUBDIR += gstreamer-plugins-neon SUBDIR += gstreamer1-plugins-neon SUBDIR += gtkhtml3 SUBDIR += gtkhtml4 SUBDIR += guacamole-client SUBDIR += guile-www SUBDIR += gurlchecker SUBDIR += h2o SUBDIR += h2o-devel SUBDIR += habari SUBDIR += halberd SUBDIR += hastymail2-devel SUBDIR += havp SUBDIR += helma SUBDIR += hiawatha SUBDIR += horde-ansel SUBDIR += horde-base SUBDIR += horde-passwd SUBDIR += horde-trean SUBDIR += horde-wicked SUBDIR += hotcrp SUBDIR += hs-DAV SUBDIR += hs-HTTP SUBDIR += hs-authenticate SUBDIR += hs-cgi SUBDIR += hs-cookie SUBDIR += hs-css-text SUBDIR += hs-fastcgi SUBDIR += hs-gitit SUBDIR += hs-happstack SUBDIR += hs-happstack-server SUBDIR += hs-heist SUBDIR += hs-hjsmin SUBDIR += hs-http-api-data SUBDIR += hs-http-client SUBDIR += hs-http-client-tls SUBDIR += hs-http-conduit SUBDIR += hs-http-date SUBDIR += hs-http-reverse-proxy SUBDIR += hs-http-server SUBDIR += hs-http-types SUBDIR += hs-http2 SUBDIR += hs-multipart SUBDIR += hs-oeis SUBDIR += hs-path-pieces SUBDIR += hs-recaptcha SUBDIR += hs-shakespeare SUBDIR += hs-snap SUBDIR += hs-snap-core SUBDIR += hs-snap-server SUBDIR += hs-url SUBDIR += hs-wai SUBDIR += hs-wai-app-static SUBDIR += hs-wai-extra SUBDIR += hs-wai-logger SUBDIR += hs-warp SUBDIR += hs-warp-tls SUBDIR += hs-webkit SUBDIR += hs-xss-sanitize SUBDIR += hs-yesod SUBDIR += hs-yesod-auth SUBDIR += hs-yesod-auth-hashdb SUBDIR += hs-yesod-bin SUBDIR += hs-yesod-core SUBDIR += hs-yesod-form SUBDIR += hs-yesod-persistent SUBDIR += hs-yesod-static SUBDIR += hs-yesod-test SUBDIR += htdigest SUBDIR += htdump SUBDIR += html2hdml SUBDIR += html2wml SUBDIR += htmlcompressor SUBDIR += htmlcxx SUBDIR += htmlpp SUBDIR += httest SUBDIR += http-analyze SUBDIR += http_get SUBDIR += http_load SUBDIR += http_post SUBDIR += httpasyncclient SUBDIR += httpclient SUBDIR += httpcore SUBDIR += httptunnel SUBDIR += httrack SUBDIR += hypermail SUBDIR += igal2 SUBDIR += ikiwiki SUBDIR += ilias SUBDIR += imgsizer SUBDIR += interchange SUBDIR += iridium SUBDIR += itop SUBDIR += jdresolve SUBDIR += jericho-html SUBDIR += jesred SUBDIR += jetty8 SUBDIR += jetty9 SUBDIR += jmeter SUBDIR += joomla3 SUBDIR += jspwiki SUBDIR += jtoolkit SUBDIR += junkbuster SUBDIR += kanboard SUBDIR += kannel SUBDIR += kannel-sqlbox SUBDIR += kcgi SUBDIR += kdewebdev-kde4 SUBDIR += kf5-kdewebkit SUBDIR += kf5-khtml SUBDIR += kf5-kjs SUBDIR += kf5-kjsembed SUBDIR += kohana SUBDIR += kpartsplugin SUBDIR += kplaylist SUBDIR += kurly SUBDIR += kwebkitpart SUBDIR += larbin SUBDIR += libapreq2 SUBDIR += libdom SUBDIR += libecap SUBDIR += libepc SUBDIR += libevhtp SUBDIR += libgtkhtml SUBDIR += libhpack SUBDIR += libhubbub SUBDIR += libjwt SUBDIR += libmicrohttpd SUBDIR += libnghttp2 SUBDIR += libresonic-standalone SUBDIR += libsocialweb SUBDIR += libwww SUBDIR += lightsquid SUBDIR += lighttpd SUBDIR += lighttpd-mod_h264_streaming SUBDIR += limesurvey SUBDIR += linkcheck SUBDIR += linkchecker SUBDIR += linklint SUBDIR += links SUBDIR += links-hacked SUBDIR += links1 SUBDIR += linux-c6-qt47-webkit SUBDIR += linux-c7-qtwebkit SUBDIR += linux-flashplayer SUBDIR += linux-opera SUBDIR += litmus SUBDIR += ljdeps SUBDIR += ljdump SUBDIR += llgal SUBDIR += logtools SUBDIR += luakit SUBDIR += lynx SUBDIR += lynx-current SUBDIR += madsonic SUBDIR += madsonic-standalone SUBDIR += magento SUBDIR += mahara SUBDIR += man2web SUBDIR += mathjax SUBDIR += mathopd SUBDIR += matomo SUBDIR += mattermost-server SUBDIR += mattermost-webapp SUBDIR += mediawiki127 SUBDIR += mediawiki129 SUBDIR += mediawiki130 SUBDIR += mediawiki131 SUBDIR += mergelog SUBDIR += mgstat SUBDIR += mhonarc SUBDIR += micro_httpd SUBDIR += middleman SUBDIR += midori SUBDIR += mimetex SUBDIR += mini_httpd SUBDIR += miniflux SUBDIR += miniminiweb SUBDIR += minio SUBDIR += minio-client SUBDIR += mitmproxy SUBDIR += mkapachepw SUBDIR += mknmz-wwwoffle SUBDIR += mnogosearch SUBDIR += mod_amazon_proxy SUBDIR += mod_asn SUBDIR += mod_auth_cas SUBDIR += mod_auth_cookie_mysql2 SUBDIR += mod_auth_external2 SUBDIR += mod_auth_gssapi SUBDIR += mod_auth_kerb2 SUBDIR += mod_auth_mysql2 SUBDIR += mod_auth_mysql_another SUBDIR += mod_auth_openid SUBDIR += mod_auth_openidc SUBDIR += mod_auth_pam2 SUBDIR += mod_auth_pgsql2 SUBDIR += mod_auth_pubtkt SUBDIR += mod_auth_tkt SUBDIR += mod_auth_xradius SUBDIR += mod_authnz_crowd SUBDIR += mod_authnz_external24 SUBDIR += mod_backtrace SUBDIR += mod_cfg_ldap SUBDIR += mod_chroot SUBDIR += mod_cloudflare SUBDIR += mod_cvs2 SUBDIR += mod_dav_svn SUBDIR += mod_dnssd SUBDIR += mod_domaintree SUBDIR += mod_encoding SUBDIR += mod_evasive SUBDIR += mod_fastcgi SUBDIR += mod_fcgid SUBDIR += mod_fileiri SUBDIR += mod_flickr SUBDIR += mod_geoip2 SUBDIR += mod_gnutls SUBDIR += mod_gzip2 SUBDIR += mod_h264_streaming SUBDIR += mod_http2-devel SUBDIR += mod_jk SUBDIR += mod_layout22 SUBDIR += mod_limitipconn2 SUBDIR += mod_line_edit SUBDIR += mod_log_sql2 SUBDIR += mod_md-devel SUBDIR += mod_memcache SUBDIR += mod_memcache_block SUBDIR += mod_mono SUBDIR += mod_mpm_itk SUBDIR += mod_pagespeed SUBDIR += mod_perl2 SUBDIR += mod_php56 SUBDIR += mod_php70 SUBDIR += mod_php71 SUBDIR += mod_php72 SUBDIR += mod_proctitle SUBDIR += mod_proxy_xml SUBDIR += mod_python35 SUBDIR += mod_qos SUBDIR += mod_realdoc SUBDIR += mod_reproxy SUBDIR += mod_rivet SUBDIR += mod_rpaf2 SUBDIR += mod_scgi SUBDIR += mod_security SUBDIR += mod_security3 SUBDIR += mod_setenvifplus SUBDIR += mod_tidy SUBDIR += mod_tsa SUBDIR += mod_umask SUBDIR += mod_vhs SUBDIR += mod_webauth SUBDIR += mod_webkit SUBDIR += mod_wsgi4 SUBDIR += mod_xmlns SUBDIR += mod_xsendfile SUBDIR += mohawk SUBDIR += moinmoin SUBDIR += moinmoincli SUBDIR += monast SUBDIR += mongoose SUBDIR += mongrel2 SUBDIR += moodle31 SUBDIR += moodle33 SUBDIR += moodle34 SUBDIR += moodle35 SUBDIR += mozplugger SUBDIR += multisort SUBDIR += multiwatch SUBDIR += mybb SUBDIR += myfaces SUBDIR += mysar SUBDIR += mysqlphp2postgres SUBDIR += mythplugin-mythweb SUBDIR += nanoblogger SUBDIR += nanoblogger-extra SUBDIR += neon SUBDIR += netoffice SUBDIR += netrik SUBDIR += netstiff SUBDIR += netsurf SUBDIR += newsboat SUBDIR += nextcloud SUBDIR += nextcloud-calendar SUBDIR += nextcloud-contacts SUBDIR += nextcloud-notes SUBDIR += nextcloud-tasks SUBDIR += nghttp2 SUBDIR += nginx SUBDIR += nginx-devel SUBDIR += nginx-full SUBDIR += nginx-lite SUBDIR += nginx-naxsi SUBDIR += nibbleblog SUBDIR += node SUBDIR += node6 SUBDIR += node8 SUBDIR += nostromo SUBDIR += novnc SUBDIR += novnc-websockify SUBDIR += npapi-xine SUBDIR += npc SUBDIR += npm SUBDIR += npm-node6 SUBDIR += npm-node8 SUBDIR += nspluginwrapper SUBDIR += nuvolaplayer-8tracks SUBDIR += nuvolaplayer-all-services SUBDIR += nuvolaplayer-amazon-cloud-player SUBDIR += nuvolaplayer-bandcamp SUBDIR += nuvolaplayer-google-play-music SUBDIR += nuvolaplayer-groove SUBDIR += nuvolaplayer-jango SUBDIR += nuvolaplayer-kexp SUBDIR += nuvolaplayer-logitech-media-server SUBDIR += nuvolaplayer-mixcloud SUBDIR += nuvolaplayer-plex SUBDIR += nuvolaplayer-soundcloud SUBDIR += nuvolaplayer-spotify SUBDIR += nuvolaplayer-tunein SUBDIR += nuvolaplayer-yandex-music SUBDIR += nuvolaplayer-youtube SUBDIR += obhttpd SUBDIR += onionshare SUBDIR += opencart SUBDIR += opera SUBDIR += opera-linuxplugins SUBDIR += orangehrm SUBDIR += oscommerce SUBDIR += osrm-backend SUBDIR += otrs SUBDIR += otter-browser SUBDIR += owncloud SUBDIR += p5-AMF-Perl SUBDIR += p5-Acme-Monta SUBDIR += p5-Amon2 SUBDIR += p5-Amon2-Lite SUBDIR += p5-Amon2-Plugin-LogDispatch SUBDIR += p5-Amon2-Plugin-Web-CSRFDefender SUBDIR += p5-Amon2-Plugin-Web-MobileAgent SUBDIR += p5-Any-Template SUBDIR += p5-Any-URI-Escape SUBDIR += p5-AnyEvent-HTTP SUBDIR += p5-AnyEvent-HTTP-LWP-UserAgent SUBDIR += p5-AnyEvent-HTTPD SUBDIR += p5-AnyEvent-Mojo SUBDIR += p5-AnyEvent-ReverseHTTP SUBDIR += p5-AnyEvent-SCGI SUBDIR += p5-AnyEvent-WebSocket-Client SUBDIR += p5-Apache-ASP SUBDIR += p5-Apache-Admin-Config SUBDIR += p5-Apache-AuthCookie SUBDIR += p5-Apache-AuthTicket SUBDIR += p5-Apache-Clean2 SUBDIR += p5-Apache-ConfigFile SUBDIR += p5-Apache-ConfigParser SUBDIR += p5-Apache-DB SUBDIR += p5-Apache-DBI SUBDIR += p5-Apache-Gallery SUBDIR += p5-Apache-Htgroup SUBDIR += p5-Apache-LogFormat-Compiler SUBDIR += p5-Apache-MP3 SUBDIR += p5-Apache-ParseFormData SUBDIR += p5-Apache-Profiler SUBDIR += p5-Apache-Session SUBDIR += p5-Apache-Session-PHP SUBDIR += p5-Apache-Session-SQLite3 SUBDIR += p5-Apache-Session-SharedMem SUBDIR += p5-Apache-Session-Wrapper SUBDIR += p5-Apache-SessionX SUBDIR += p5-Apache-Singleton SUBDIR += p5-Apache2-SiteControl SUBDIR += p5-ApacheBench SUBDIR += p5-App-Nopaste SUBDIR += p5-App-gist SUBDIR += p5-Ark SUBDIR += p5-Bigtop SUBDIR += p5-Blog-Spam SUBDIR += p5-Browser-Open SUBDIR += p5-Business-PayPal SUBDIR += p5-CGI SUBDIR += p5-CGI-Ajax SUBDIR += p5-CGI-Application SUBDIR += p5-CGI-Application-Dispatch SUBDIR += p5-CGI-Application-Dispatch-Server SUBDIR += p5-CGI-Application-PSGI SUBDIR += p5-CGI-Application-Plugin-AnyTemplate SUBDIR += p5-CGI-Application-Plugin-Apache SUBDIR += p5-CGI-Application-Plugin-Authentication SUBDIR += p5-CGI-Application-Plugin-Authorization SUBDIR += p5-CGI-Application-Plugin-AutoRunmode SUBDIR += p5-CGI-Application-Plugin-Config-YAML SUBDIR += p5-CGI-Application-Plugin-ConfigAuto SUBDIR += p5-CGI-Application-Plugin-DBH SUBDIR += p5-CGI-Application-Plugin-DebugScreen SUBDIR += p5-CGI-Application-Plugin-DevPopup SUBDIR += p5-CGI-Application-Plugin-Forward SUBDIR += p5-CGI-Application-Plugin-HTDot SUBDIR += p5-CGI-Application-Plugin-HTMLPrototype SUBDIR += p5-CGI-Application-Plugin-HtmlTidy SUBDIR += p5-CGI-Application-Plugin-JSON SUBDIR += p5-CGI-Application-Plugin-LinkIntegrity SUBDIR += p5-CGI-Application-Plugin-LogDispatch SUBDIR += p5-CGI-Application-Plugin-MessageStack SUBDIR += p5-CGI-Application-Plugin-Redirect SUBDIR += p5-CGI-Application-Plugin-Session SUBDIR += p5-CGI-Application-Plugin-Stream SUBDIR += p5-CGI-Application-Plugin-TT SUBDIR += p5-CGI-Application-Plugin-ValidateRM SUBDIR += p5-CGI-Application-Plugin-ViewCode SUBDIR += p5-CGI-Application-Server SUBDIR += p5-CGI-ArgChecker SUBDIR += p5-CGI-Builder SUBDIR += p5-CGI-Builder-TT2 SUBDIR += p5-CGI-Cache SUBDIR += p5-CGI-Compile SUBDIR += p5-CGI-Compress-Gzip SUBDIR += p5-CGI-Cookie-Splitter SUBDIR += p5-CGI-Cookie-XS SUBDIR += p5-CGI-Deurl-XS SUBDIR += p5-CGI-Emulate-PSGI SUBDIR += p5-CGI-EncryptForm SUBDIR += p5-CGI-Enurl SUBDIR += p5-CGI-Ex SUBDIR += p5-CGI-Expand SUBDIR += p5-CGI-ExtDirect SUBDIR += p5-CGI-FCKeditor SUBDIR += p5-CGI-Fast SUBDIR += p5-CGI-FastTemplate SUBDIR += p5-CGI-FormBuilder SUBDIR += p5-CGI-Framework SUBDIR += p5-CGI-Kwiki SUBDIR += p5-CGI-Lite SUBDIR += p5-CGI-Minimal SUBDIR += p5-CGI-PSGI SUBDIR += p5-CGI-Pager SUBDIR += p5-CGI-Prototype SUBDIR += p5-CGI-Response SUBDIR += p5-CGI-SSI SUBDIR += p5-CGI-Session SUBDIR += p5-CGI-Session-ExpireSessions SUBDIR += p5-CGI-Simple SUBDIR += p5-CGI-SpeedyCGI SUBDIR += p5-CGI-Struct SUBDIR += p5-CGI-Thin SUBDIR += p5-CGI-Untaint SUBDIR += p5-CGI-Untaint-date SUBDIR += p5-CGI-Untaint-email SUBDIR += p5-CGI-Upload SUBDIR += p5-CGI-Utils SUBDIR += p5-CGI-XMLApplication SUBDIR += p5-CGI.pm SUBDIR += p5-CIF-Client SUBDIR += p5-CSS-DOM SUBDIR += p5-CSS-Inliner SUBDIR += p5-Catalyst-Action-REST SUBDIR += p5-Catalyst-Action-RenderView SUBDIR += p5-Catalyst-Action-Serialize-XML-Hash-LX SUBDIR += p5-Catalyst-ActionRole-ACL SUBDIR += p5-Catalyst-Authentication-Credential-HTTP SUBDIR += p5-Catalyst-Authentication-Credential-OpenID SUBDIR += p5-Catalyst-Authentication-Store-DBIx-Class SUBDIR += p5-Catalyst-Authentication-Store-LDAP SUBDIR += p5-Catalyst-Component-ACCEPT_CONTEXT SUBDIR += p5-Catalyst-Component-InstancePerContext SUBDIR += p5-Catalyst-Controller-ActionRole SUBDIR += p5-Catalyst-Controller-BindLex SUBDIR += p5-Catalyst-Controller-FormBuilder SUBDIR += p5-Catalyst-Controller-HTML-FormFu SUBDIR += p5-Catalyst-Controller-RateLimit SUBDIR += p5-Catalyst-Controller-RequestToken SUBDIR += p5-Catalyst-Controller-SOAP SUBDIR += p5-Catalyst-Devel SUBDIR += p5-Catalyst-DispatchType-Regex SUBDIR += p5-Catalyst-Engine-Apache SUBDIR += p5-Catalyst-Engine-HTTP-Prefork SUBDIR += p5-Catalyst-Engine-PSGI SUBDIR += p5-Catalyst-Enzyme SUBDIR += p5-Catalyst-Helper-Controller-Scaffold SUBDIR += p5-Catalyst-Manual SUBDIR += p5-Catalyst-Model-Adaptor SUBDIR += p5-Catalyst-Model-CDBI SUBDIR += p5-Catalyst-Model-CDBI-Plain SUBDIR += p5-Catalyst-Model-CDBI-Sweet SUBDIR += p5-Catalyst-Model-DBIC-Plain SUBDIR += p5-Catalyst-Model-DBIC-Schema SUBDIR += p5-Catalyst-Model-DynamicAdaptor SUBDIR += p5-Catalyst-Model-LDAP SUBDIR += p5-Catalyst-Model-Memcached SUBDIR += p5-Catalyst-Model-Oryx SUBDIR += p5-Catalyst-Model-Tarantool SUBDIR += p5-Catalyst-Model-XML-Feed SUBDIR += p5-Catalyst-Model-Xapian SUBDIR += p5-Catalyst-Model-Xapian10 SUBDIR += p5-Catalyst-Plugin-AtomServer SUBDIR += p5-Catalyst-Plugin-Authentication SUBDIR += p5-Catalyst-Plugin-Authentication-CDBI SUBDIR += p5-Catalyst-Plugin-Authentication-OpenID SUBDIR += p5-Catalyst-Plugin-Authentication-Store-Htpasswd SUBDIR += p5-Catalyst-Plugin-Authorization-ACL SUBDIR += p5-Catalyst-Plugin-Authorization-Roles SUBDIR += p5-Catalyst-Plugin-AutoCRUD SUBDIR += p5-Catalyst-Plugin-Browser SUBDIR += p5-Catalyst-Plugin-C3 SUBDIR += p5-Catalyst-Plugin-Cache SUBDIR += p5-Catalyst-Plugin-Cache-FastMmap SUBDIR += p5-Catalyst-Plugin-Cache-Memcached SUBDIR += p5-Catalyst-Plugin-Cache-Memcached-Fast SUBDIR += p5-Catalyst-Plugin-Captcha SUBDIR += p5-Catalyst-Plugin-ConfigLoader SUBDIR += p5-Catalyst-Plugin-ConfigLoader-Environment SUBDIR += p5-Catalyst-Plugin-CookiedSession SUBDIR += p5-Catalyst-Plugin-DateTime SUBDIR += p5-Catalyst-Plugin-DefaultEnd SUBDIR += p5-Catalyst-Plugin-Email SUBDIR += p5-Catalyst-Plugin-ErrorCatcher SUBDIR += p5-Catalyst-Plugin-FillInForm SUBDIR += p5-Catalyst-Plugin-FormBuilder SUBDIR += p5-Catalyst-Plugin-FormValidator SUBDIR += p5-Catalyst-Plugin-I18N SUBDIR += p5-Catalyst-Plugin-Log-Dispatch SUBDIR += p5-Catalyst-Plugin-Log-Handler SUBDIR += p5-Catalyst-Plugin-LogWarnings SUBDIR += p5-Catalyst-Plugin-PageCache SUBDIR += p5-Catalyst-Plugin-Params-Nested SUBDIR += p5-Catalyst-Plugin-Pluggable SUBDIR += p5-Catalyst-Plugin-Prototype SUBDIR += p5-Catalyst-Plugin-RunAfterRequest SUBDIR += p5-Catalyst-Plugin-Scheduler SUBDIR += p5-Catalyst-Plugin-Server SUBDIR += p5-Catalyst-Plugin-Session SUBDIR += p5-Catalyst-Plugin-Session-FastMmap SUBDIR += p5-Catalyst-Plugin-Session-PerUser SUBDIR += p5-Catalyst-Plugin-Session-State-Cookie SUBDIR += p5-Catalyst-Plugin-Session-State-URI SUBDIR += p5-Catalyst-Plugin-Session-Store-Cache SUBDIR += p5-Catalyst-Plugin-Session-Store-DBI SUBDIR += p5-Catalyst-Plugin-Session-Store-DBIC SUBDIR += p5-Catalyst-Plugin-Session-Store-Delegate SUBDIR += p5-Catalyst-Plugin-Session-Store-FastMmap SUBDIR += p5-Catalyst-Plugin-Session-Store-File SUBDIR += p5-Catalyst-Plugin-Session-Store-Memcached SUBDIR += p5-Catalyst-Plugin-Session-Store-Memcached-Fast SUBDIR += p5-Catalyst-Plugin-Setenv SUBDIR += p5-Catalyst-Plugin-SmartURI SUBDIR += p5-Catalyst-Plugin-StackTrace SUBDIR += p5-Catalyst-Plugin-Static SUBDIR += p5-Catalyst-Plugin-Static-Simple SUBDIR += p5-Catalyst-Plugin-StatusMessage SUBDIR += p5-Catalyst-Plugin-SubRequest SUBDIR += p5-Catalyst-Plugin-Textile SUBDIR += p5-Catalyst-Plugin-Unicode SUBDIR += p5-Catalyst-Plugin-XMLRPC SUBDIR += p5-Catalyst-Runtime SUBDIR += p5-Catalyst-TraitFor-Controller-DBIC-DoesPaging SUBDIR += p5-Catalyst-TraitFor-Request-BrowserDetect SUBDIR += p5-Catalyst-View-ClearSilver SUBDIR += p5-Catalyst-View-Email SUBDIR += p5-Catalyst-View-GraphViz SUBDIR += p5-Catalyst-View-HTML-Template SUBDIR += p5-Catalyst-View-HTML-Template-Compiled SUBDIR += p5-Catalyst-View-JSON SUBDIR += p5-Catalyst-View-Jemplate SUBDIR += p5-Catalyst-View-Mason SUBDIR += p5-Catalyst-View-REST-XML SUBDIR += p5-Catalyst-View-RRDGraph SUBDIR += p5-Catalyst-View-TT SUBDIR += p5-Catalyst-View-TT-Alloy SUBDIR += p5-Catalyst-View-TT-ControllerLocal SUBDIR += p5-Catalyst-View-Template-Declare SUBDIR += p5-Catalyst-View-Templated SUBDIR += p5-Catalyst-View-XML-Feed SUBDIR += p5-Catalyst-View-XML-Simple SUBDIR += p5-Catalyst-View-XSLT SUBDIR += p5-CatalystX-AppBuilder SUBDIR += p5-CatalystX-Component-Traits SUBDIR += p5-CatalystX-InjectComponent SUBDIR += p5-CatalystX-LeakChecker SUBDIR += p5-CatalystX-Profile SUBDIR += p5-CatalystX-REPL SUBDIR += p5-CatalystX-RoleApplicator SUBDIR += p5-CatalystX-SimpleLogin SUBDIR += p5-CatalystX-VirtualComponents SUBDIR += p5-Class-DBI-FromForm SUBDIR += p5-ClearSilver SUBDIR += p5-Compress-LeadingBlankSpaces SUBDIR += p5-Continuity SUBDIR += p5-Cookie-Baker SUBDIR += p5-Corona SUBDIR += p5-Dancer SUBDIR += p5-Dancer-Logger-Log4perl SUBDIR += p5-Dancer-Plugin-ExtDirect SUBDIR += p5-Dancer-Plugin-Feed SUBDIR += p5-Dancer-Plugin-FlashMessage SUBDIR += p5-Dancer-Plugin-Lexicon SUBDIR += p5-Dancer-Plugin-Memcached SUBDIR += p5-Dancer-Plugin-REST SUBDIR += p5-Dancer-Plugin-RPC SUBDIR += p5-Dancer-Plugin-SiteMap SUBDIR += p5-Dancer-Plugin-ValidationClass SUBDIR += p5-Dancer-Session-Cookie SUBDIR += p5-Dancer-Template-Xslate SUBDIR += p5-Dancer2 SUBDIR += p5-Dancer2-Plugin-Ajax SUBDIR += p5-Dancer2-Plugin-Deferred SUBDIR += p5-Dancer2-Plugin-Interchange6 SUBDIR += p5-Dancer2-Plugin-Path-Class SUBDIR += p5-Data-TreeDumper-Renderer-DHTML SUBDIR += p5-Data-Validate-URI SUBDIR += p5-Emplacken SUBDIR += p5-FAQ-OMatic SUBDIR += p5-FCGI SUBDIR += p5-FCGI-Async SUBDIR += p5-FCGI-Client SUBDIR += p5-FCGI-Engine SUBDIR += p5-FCGI-ProcManager SUBDIR += p5-FCGI-Spawn SUBDIR += p5-FEAR-API SUBDIR += p5-Facebook-Graph SUBDIR += p5-Feed-Find SUBDIR += p5-Feersum SUBDIR += p5-File-Mork SUBDIR += p5-Flea SUBDIR += p5-Flickr-API SUBDIR += p5-Flickr-Upload SUBDIR += p5-Fliggy SUBDIR += p5-Furl SUBDIR += p5-FurlX-Coro SUBDIR += p5-Gantry SUBDIR += p5-Geo-Caching SUBDIR += p5-Google-Search SUBDIR += p5-Gtk2-WebKit SUBDIR += p5-Gungho SUBDIR += p5-GunghoX-FollowLinks SUBDIR += p5-HTML-Adsense SUBDIR += p5-HTML-Breadcrumbs SUBDIR += p5-HTML-CalendarMonthSimple SUBDIR += p5-HTML-Chunks SUBDIR += p5-HTML-Clean SUBDIR += p5-HTML-ContentExtractor SUBDIR += p5-HTML-DOM SUBDIR += p5-HTML-Declare SUBDIR += p5-HTML-Defaultify SUBDIR += p5-HTML-Diff SUBDIR += p5-HTML-Display SUBDIR += p5-HTML-Element-Extended SUBDIR += p5-HTML-Element-Library SUBDIR += p5-HTML-Element-Replacer SUBDIR += p5-HTML-Encoding SUBDIR += p5-HTML-ExtractContent SUBDIR += p5-HTML-ExtractMain SUBDIR += p5-HTML-Field SUBDIR += p5-HTML-FillInForm SUBDIR += p5-HTML-FillInForm-ForceUTF8 SUBDIR += p5-HTML-FillInForm-Lite SUBDIR += p5-HTML-Form SUBDIR += p5-HTML-FormFu SUBDIR += p5-HTML-FormFu-Imager SUBDIR += p5-HTML-FormFu-Model-DBIC SUBDIR += p5-HTML-FormFu-MultiForm SUBDIR += p5-HTML-FormHandler SUBDIR += p5-HTML-FromANSI SUBDIR += p5-HTML-FromText SUBDIR += p5-HTML-GenToc SUBDIR += p5-HTML-GenerateUtil SUBDIR += p5-HTML-GoogleMaps SUBDIR += p5-HTML-Highlight SUBDIR += p5-HTML-LinkExtractor SUBDIR += p5-HTML-LinkList SUBDIR += p5-HTML-Lint SUBDIR += p5-HTML-Location SUBDIR += p5-HTML-Macro SUBDIR += p5-HTML-Mason SUBDIR += p5-HTML-Mason-PSGIHandler SUBDIR += p5-HTML-MobileConverter SUBDIR += p5-HTML-Pager SUBDIR += p5-HTML-Parser SUBDIR += p5-HTML-Parser-Simple SUBDIR += p5-HTML-Perlinfo SUBDIR += p5-HTML-PrettyPrinter SUBDIR += p5-HTML-Prototype SUBDIR += p5-HTML-Query SUBDIR += p5-HTML-QuickCheck SUBDIR += p5-HTML-RSSAutodiscovery SUBDIR += p5-HTML-ResolveLink SUBDIR += p5-HTML-Restrict SUBDIR += p5-HTML-RobotsMETA SUBDIR += p5-HTML-Scrubber SUBDIR += p5-HTML-Seamstress SUBDIR += p5-HTML-Selector-XPath SUBDIR += p5-HTML-Shakan SUBDIR += p5-HTML-SimpleLinkExtor SUBDIR += p5-HTML-SimpleParse SUBDIR += p5-HTML-StickyQuery SUBDIR += p5-HTML-StickyQuery-DoCoMoGUID SUBDIR += p5-HTML-Stream SUBDIR += p5-HTML-Strip SUBDIR += p5-HTML-StripScripts SUBDIR += p5-HTML-StripScripts-Parser SUBDIR += p5-HTML-Summary SUBDIR += p5-HTML-Table SUBDIR += p5-HTML-TableContentParser SUBDIR += p5-HTML-TableExtract SUBDIR += p5-HTML-TableLayout SUBDIR += p5-HTML-TableParser SUBDIR += p5-HTML-TableTiler SUBDIR += p5-HTML-TagCloud SUBDIR += p5-HTML-TagCloud-Extended SUBDIR += p5-HTML-TagParser SUBDIR += p5-HTML-Tagset SUBDIR += p5-HTML-Template SUBDIR += p5-HTML-Template-Associate SUBDIR += p5-HTML-Template-Compiled SUBDIR += p5-HTML-Template-Expr SUBDIR += p5-HTML-Template-HashWrapper SUBDIR += p5-HTML-Template-JIT SUBDIR += p5-HTML-Template-Pluggable SUBDIR += p5-HTML-Template-Pro SUBDIR += p5-HTML-Toc SUBDIR += p5-HTML-TokeParser-Simple SUBDIR += p5-HTML-Tree SUBDIR += p5-HTML-TreeBuilder-LibXML SUBDIR += p5-HTML-TreeBuilder-XPath SUBDIR += p5-HTML-Widgets-SelectLayers SUBDIR += p5-HTML-WikiConverter SUBDIR += p5-HTML-WikiConverter-DokuWiki SUBDIR += p5-HTML-WikiConverter-GoogleCode SUBDIR += p5-HTML-WikiConverter-Kwiki SUBDIR += p5-HTML-WikiConverter-Markdown SUBDIR += p5-HTML-WikiConverter-MediaWiki SUBDIR += p5-HTML-WikiConverter-MoinMoin SUBDIR += p5-HTML-WikiConverter-Oddmuse SUBDIR += p5-HTML-WikiConverter-PbWiki SUBDIR += p5-HTML-WikiConverter-PhpWiki SUBDIR += p5-HTML-WikiConverter-PmWiki SUBDIR += p5-HTML-WikiConverter-SnipSnap SUBDIR += p5-HTML-WikiConverter-Socialtext SUBDIR += p5-HTML-WikiConverter-TikiWiki SUBDIR += p5-HTML-WikiConverter-UseMod SUBDIR += p5-HTML-WikiConverter-WakkaWiki SUBDIR += p5-HTML-WikiConverter-WikkaWiki SUBDIR += p5-HTML5-DOM SUBDIR += p5-HTTP-Async SUBDIR += p5-HTTP-Body SUBDIR += p5-HTTP-BrowserDetect SUBDIR += p5-HTTP-Cache-Transparent SUBDIR += p5-HTTP-CookieJar SUBDIR += p5-HTTP-Cookies SUBDIR += p5-HTTP-Cookies-Mozilla SUBDIR += p5-HTTP-Cookies-iCab SUBDIR += p5-HTTP-Cookies-w3m SUBDIR += p5-HTTP-DAV SUBDIR += p5-HTTP-Daemon SUBDIR += p5-HTTP-Daemon-SSL SUBDIR += p5-HTTP-Date SUBDIR += p5-HTTP-Engine SUBDIR += p5-HTTP-Engine-Middleware SUBDIR += p5-HTTP-Entity-Parser SUBDIR += p5-HTTP-Exception SUBDIR += p5-HTTP-HeaderParser-XS SUBDIR += p5-HTTP-Headers-Fast SUBDIR += p5-HTTP-Link-Parser SUBDIR += p5-HTTP-Lite SUBDIR += p5-HTTP-MHTTP SUBDIR += p5-HTTP-Message SUBDIR += p5-HTTP-MobileAgent SUBDIR += p5-HTTP-MobileAgent-Plugin-Charset SUBDIR += p5-HTTP-MobileAgent-Plugin-Locator SUBDIR += p5-HTTP-MultiPartParser SUBDIR += p5-HTTP-Negotiate SUBDIR += p5-HTTP-Parser SUBDIR += p5-HTTP-Parser-XS SUBDIR += p5-HTTP-Proxy SUBDIR += p5-HTTP-ProxyPAC SUBDIR += p5-HTTP-Recorder SUBDIR += p5-HTTP-Request-AsCGI SUBDIR += p5-HTTP-Request-Params SUBDIR += p5-HTTP-Response-Encoding SUBDIR += p5-HTTP-Router SUBDIR += p5-HTTP-Server-Simple SUBDIR += p5-HTTP-Server-Simple-Authen SUBDIR += p5-HTTP-Server-Simple-Mason SUBDIR += p5-HTTP-Server-Simple-PSGI SUBDIR += p5-HTTP-Server-Simple-Recorder SUBDIR += p5-HTTP-Server-Simple-Static SUBDIR += p5-HTTP-Session SUBDIR += p5-HTTP-Session-State-MobileAgentID SUBDIR += p5-HTTP-Session-Store-DBI SUBDIR += p5-HTTP-Session2 SUBDIR += p5-HTTP-SimpleLinkChecker SUBDIR += p5-HTTP-Size SUBDIR += p5-HTTP-Thin SUBDIR += p5-HTTP-Tiny SUBDIR += p5-HTTP-Tiny-SPDY SUBDIR += p5-HTTP-Tiny-UA SUBDIR += p5-HTTP-WebTest SUBDIR += p5-HTTP-XSCookies SUBDIR += p5-HTTPD-Log-Filter SUBDIR += p5-HTTPD-User-Manage SUBDIR += p5-Hijk SUBDIR += p5-I18N-AcceptLanguage SUBDIR += p5-IMDB-Film SUBDIR += p5-Image-Delivery SUBDIR += p5-Interchange6 SUBDIR += p5-JE SUBDIR += p5-JSON-API SUBDIR += p5-Jemplate SUBDIR += p5-Jifty SUBDIR += p5-LWP-Authen-Negotiate SUBDIR += p5-LWP-Authen-OAuth SUBDIR += p5-LWP-Authen-Wsse SUBDIR += p5-LWP-ConnCache-MaxKeepAliveRequests SUBDIR += p5-LWP-MediaTypes SUBDIR += p5-LWP-Online SUBDIR += p5-LWP-Protocol-PSGI SUBDIR += p5-LWP-Protocol-connect SUBDIR += p5-LWP-Protocol-http10 SUBDIR += p5-LWP-Protocol-https SUBDIR += p5-LWP-Protocol-socks SUBDIR += p5-LWP-UserAgent-Determined SUBDIR += p5-LWP-UserAgent-POE SUBDIR += p5-LWP-UserAgent-WithCache SUBDIR += p5-LWPx-ParanoidAgent SUBDIR += p5-LWPx-TimedHTTP SUBDIR += p5-Markup-Perl SUBDIR += p5-Mason SUBDIR += p5-MasonX-Interp-WithCallbacks SUBDIR += p5-MasonX-Profiler SUBDIR += p5-MasonX-Request-WithApacheSession SUBDIR += p5-MasonX-WebApp SUBDIR += p5-Maypole SUBDIR += p5-Maypole-Authentication-UserSessionCookie SUBDIR += p5-Maypole-Component SUBDIR += p5-McBain SUBDIR += p5-McBain-WithPSGI SUBDIR += p5-MediaWiki SUBDIR += p5-MediaWiki-API SUBDIR += p5-Mobile-UserAgent SUBDIR += p5-ModPerl-VersionUtil SUBDIR += p5-Mojo-IOLoop-ForkCall SUBDIR += p5-Mojo-Server-FastCGI SUBDIR += p5-MojoMojo SUBDIR += p5-MojoX-Log-Dispatch-Simple SUBDIR += p5-MojoX-Renderer-Xslate SUBDIR += p5-Mojolicious SUBDIR += p5-Mojolicious-Plugin-Authentication SUBDIR += p5-Mojolicious-Plugin-Database SUBDIR += p5-Mojolicious-Plugin-HamlRenderer SUBDIR += p5-Mojolicious-Plugin-Mongodb SUBDIR += p5-Mojolicious-Plugin-SetUserGroup SUBDIR += p5-Mojolicious-Plugin-TtRenderer SUBDIR += p5-Mojolicious-Plugin-YamlConfig SUBDIR += p5-Monoceros SUBDIR += p5-Mozilla-CA SUBDIR += p5-Net-Akismet SUBDIR += p5-Net-Amazon-AWIS SUBDIR += p5-Net-Async-FastCGI SUBDIR += p5-Net-Async-HTTP SUBDIR += p5-Net-FastCGI SUBDIR += p5-Net-FireEagle SUBDIR += p5-Net-Flickr-API SUBDIR += p5-Net-Flickr-Backup SUBDIR += p5-Net-Flickr-RDF SUBDIR += p5-Net-FreshBooks-API SUBDIR += p5-Net-GeoPlanet SUBDIR += p5-Net-Plurk SUBDIR += p5-Net-STF-Client SUBDIR += p5-Net-Trac SUBDIR += p5-Net-UPS SUBDIR += p5-Net-YAP SUBDIR += p5-Net-eBay SUBDIR += p5-Newsletter SUBDIR += p5-Nginx-ReadBody SUBDIR += p5-Nginx-Simple SUBDIR += p5-PHP-Session SUBDIR += p5-POE-Component-Client-HTTP SUBDIR += p5-POE-Component-Client-UserAgent SUBDIR += p5-POE-Component-Server-HTTP SUBDIR += p5-POE-Component-Server-HTTPServer SUBDIR += p5-POE-Component-Server-PSGI SUBDIR += p5-POE-Component-Server-SOAP SUBDIR += p5-POE-Component-Server-SimpleHTTP SUBDIR += p5-POE-Filter-HTTP-Parser SUBDIR += p5-POEx-Role-PSGIServer SUBDIR += p5-PSGI SUBDIR += p5-ParallelUserAgent SUBDIR += p5-Parse-HTTP-UserAgent SUBDIR += p5-Path-Class-URI SUBDIR += p5-Perlanet SUBDIR += p5-Perlbal-Plugin-PSGI SUBDIR += p5-Plack SUBDIR += p5-Plack-App-Proxy SUBDIR += p5-Plack-Builder-Conditionals SUBDIR += p5-Plack-Handler-AnyEvent-HTTPD SUBDIR += p5-Plack-Handler-AnyEvent-ReverseHTTP SUBDIR += p5-Plack-Handler-AnyEvent-SCGI SUBDIR += p5-Plack-Handler-CLI SUBDIR += p5-Plack-Handler-SCGI SUBDIR += p5-Plack-Middleware-AMF SUBDIR += p5-Plack-Middleware-AddDefaultCharset SUBDIR += p5-Plack-Middleware-Auth-Digest SUBDIR += p5-Plack-Middleware-AutoRefresh SUBDIR += p5-Plack-Middleware-ConsoleLogger SUBDIR += p5-Plack-Middleware-CrossOrigin SUBDIR += p5-Plack-Middleware-Debug SUBDIR += p5-Plack-Middleware-Deflater SUBDIR += p5-Plack-Middleware-Expires SUBDIR += p5-Plack-Middleware-ExtDirect SUBDIR += p5-Plack-Middleware-File-Sass SUBDIR += p5-Plack-Middleware-FixMissingBodyInRedirect SUBDIR += p5-Plack-Middleware-ForceEnv SUBDIR += p5-Plack-Middleware-Header SUBDIR += p5-Plack-Middleware-IEnosniff SUBDIR += p5-Plack-Middleware-InteractiveDebugger SUBDIR += p5-Plack-Middleware-JSConcat SUBDIR += p5-Plack-Middleware-MemoryUsage SUBDIR += p5-Plack-Middleware-MethodOverride SUBDIR += p5-Plack-Middleware-NoMultipleSlashes SUBDIR += p5-Plack-Middleware-Precompressed SUBDIR += p5-Plack-Middleware-RemoveRedundantBody SUBDIR += p5-Plack-Middleware-Reproxy SUBDIR += p5-Plack-Middleware-ReverseProxy SUBDIR += p5-Plack-Middleware-Rewrite SUBDIR += p5-Plack-Middleware-ServerStatus-Lite SUBDIR += p5-Plack-Middleware-Session SUBDIR += p5-Plack-Middleware-SocketIO SUBDIR += p5-Plack-Middleware-Status SUBDIR += p5-Plack-Middleware-Test-StashWarnings SUBDIR += p5-Plack-Middleware-Throttle SUBDIR += p5-Plack-Middleware-XForwardedFor SUBDIR += p5-Plack-Server-Coro SUBDIR += p5-Plack-Server-POE SUBDIR += p5-Plack-Server-ReverseHTTP SUBDIR += p5-Plack-Test-ExternalServer SUBDIR += p5-PocketIO SUBDIR += p5-Pod-Site SUBDIR += p5-PodToHTML SUBDIR += p5-Protocol-HTTP2 SUBDIR += p5-Protocol-SocketIO SUBDIR += p5-Protocol-WebSocket SUBDIR += p5-Protocol-XMLRPC SUBDIR += p5-REST-Client SUBDIR += p5-REST-Google-Apps-Provisioning SUBDIR += p5-RPC-ExtDirect SUBDIR += p5-RT-Authen-ExternalAuth SUBDIR += p5-RT-Client-REST SUBDIR += p5-RT-Extension-CommandByMail SUBDIR += p5-RT-Extension-Gravatar SUBDIR += p5-RT-Extension-LDAPImport SUBDIR += p5-RT-Extension-MandatoryOnTransition SUBDIR += p5-RT-Extension-QuickAssign SUBDIR += p5-RT-Extension-SLA SUBDIR += p5-RTx-Calendar SUBDIR += p5-Reaction SUBDIR += p5-Reddit SUBDIR += p5-Reddit-Client SUBDIR += p5-Role-REST-Client SUBDIR += p5-Rose-HTML-Objects SUBDIR += p5-Router-Boom SUBDIR += p5-Router-Simple SUBDIR += p5-Router-Simple-Sinatraish SUBDIR += p5-SCGI SUBDIR += p5-SOAP-Transport-HTTP-Plack SUBDIR += p5-SRU SUBDIR += p5-STF-Dispatcher-PSGI SUBDIR += p5-SWF-Chart SUBDIR += p5-Scrappy SUBDIR += p5-Selenium-Remote-Driver SUBDIR += p5-Session-Storage-Secure SUBDIR += p5-Squatting SUBDIR += p5-Squatting-On-PSGI SUBDIR += p5-Starlet SUBDIR += p5-Starman SUBDIR += p5-Syntax-Highlight-HTML SUBDIR += p5-Syntax-Highlight-Shell SUBDIR += p5-Task-Catalyst SUBDIR += p5-Task-Plack SUBDIR += p5-Tatsumaki SUBDIR += p5-Template-Alloy SUBDIR += p5-Template-GD SUBDIR += p5-Template-Iterator-AlzaboWrapperCursor SUBDIR += p5-Template-Multilingual SUBDIR += p5-Template-Mustache SUBDIR += p5-Template-Plugin-Class SUBDIR += p5-Template-Plugin-Clickable SUBDIR += p5-Template-Plugin-Clickable-Email SUBDIR += p5-Template-Plugin-Comma SUBDIR += p5-Template-Plugin-FillInForm SUBDIR += p5-Template-Plugin-JSON SUBDIR += p5-Template-Plugin-JavaScript SUBDIR += p5-Template-Plugin-MP3 SUBDIR += p5-Template-Plugin-Markdown SUBDIR += p5-Template-Plugin-Monta SUBDIR += p5-Template-Plugin-Number-Format SUBDIR += p5-Template-Plugin-StripScripts SUBDIR += p5-Template-Plugin-Subst SUBDIR += p5-Template-Plugin-VMethods SUBDIR += p5-Template-Provider-Encoding SUBDIR += p5-Template-Provider-FromDATA SUBDIR += p5-Template-Simple SUBDIR += p5-Template-Stash-AutoEscape SUBDIR += p5-Template-Timer SUBDIR += p5-Template-Toolkit SUBDIR += p5-Template-Toolkit-Simple SUBDIR += p5-Tenjin SUBDIR += p5-Test-HTTP SUBDIR += p5-Test-HTTP-Server-Simple SUBDIR += p5-Test-LWP-UserAgent SUBDIR += p5-Test-Nginx SUBDIR += p5-TestGen4Web-Runner SUBDIR += p5-Text-MultiMarkdown-ApacheHandler SUBDIR += p5-Tie-TinyURL SUBDIR += p5-Toader SUBDIR += p5-Toadfarm SUBDIR += p5-Twiggy SUBDIR += p5-Twiggy-TLS SUBDIR += p5-URI-Encode SUBDIR += p5-URI-Escape-JavaScript SUBDIR += p5-URI-Escape-XS SUBDIR += p5-URI-Fetch SUBDIR += p5-URI-ParseSearchString SUBDIR += p5-URI-Sequin SUBDIR += p5-URI-Title SUBDIR += p5-URI-ToDisk SUBDIR += p5-URL-Encode SUBDIR += p5-URL-Encode-XS SUBDIR += p5-VUser-Google-ProvisioningAPI SUBDIR += p5-W3C-LinkChecker SUBDIR += p5-W3C-LogValidator SUBDIR += p5-WWW-AtMovies-TV SUBDIR += p5-WWW-Babelfish SUBDIR += p5-WWW-Baseball-NPB SUBDIR += p5-WWW-Comic SUBDIR += p5-WWW-Contact SUBDIR += p5-WWW-Curl SUBDIR += p5-WWW-DHL SUBDIR += p5-WWW-Dilbert SUBDIR += p5-WWW-Facebook-API SUBDIR += p5-WWW-Form-UrlEncoded SUBDIR += p5-WWW-FreeProxy SUBDIR += p5-WWW-GitHub-Gist SUBDIR += p5-WWW-Google-Calculator SUBDIR += p5-WWW-Google-News SUBDIR += p5-WWW-Google-News-TW SUBDIR += p5-WWW-Google-PageRank SUBDIR += p5-WWW-Google-Video SUBDIR += p5-WWW-HatenaDiary SUBDIR += p5-WWW-HatenaLogin SUBDIR += p5-WWW-HatenaStar SUBDIR += p5-WWW-IMDb SUBDIR += p5-WWW-Instapaper-Client SUBDIR += p5-WWW-LongURL SUBDIR += p5-WWW-Mechanize SUBDIR += p5-WWW-Mechanize-CGI SUBDIR += p5-WWW-Mechanize-DecodedContent SUBDIR += p5-WWW-Mechanize-FormFiller SUBDIR += p5-WWW-Mechanize-GZip SUBDIR += p5-WWW-Mechanize-Meta SUBDIR += p5-WWW-Mechanize-PhantomJS SUBDIR += p5-WWW-Mechanize-Pluggable SUBDIR += p5-WWW-Mechanize-Plugin-phpBB SUBDIR += p5-WWW-Mechanize-Shell SUBDIR += p5-WWW-Mechanize-SpamCop SUBDIR += p5-WWW-Mechanize-TreeBuilder SUBDIR += p5-WWW-Mediawiki-Client SUBDIR += p5-WWW-Mixi SUBDIR += p5-WWW-Mixi-Scraper SUBDIR += p5-WWW-Myspace SUBDIR += p5-WWW-NicoVideo-Download SUBDIR += p5-WWW-NioTV SUBDIR += p5-WWW-OpenSVN SUBDIR += p5-WWW-OpenSearch SUBDIR += p5-WWW-Pastebin-PastebinCom-Create SUBDIR += p5-WWW-Plurk SUBDIR += p5-WWW-Robot SUBDIR += p5-WWW-RobotRules SUBDIR += p5-WWW-RobotRules-Parser SUBDIR += p5-WWW-Salesforce SUBDIR += p5-WWW-Scraper-ISBN SUBDIR += p5-WWW-Scraper-ISBN-Amazon_Driver SUBDIR += p5-WWW-Scraper-ISBN-ORA_Driver SUBDIR += p5-WWW-Scripter SUBDIR += p5-WWW-Scripter-Plugin-Ajax SUBDIR += p5-WWW-Scripter-Plugin-JavaScript SUBDIR += p5-WWW-Search SUBDIR += p5-WWW-Search-AltaVista SUBDIR += p5-WWW-Search-Google SUBDIR += p5-WWW-Search-MSN SUBDIR += p5-WWW-Shorten SUBDIR += p5-WWW-Shorten-0rz SUBDIR += p5-WWW-Shorten-Bitly SUBDIR += p5-WWW-Shorten-Googl SUBDIR += p5-WWW-Shorten-KUSO SUBDIR += p5-WWW-Shorten-Yourls SUBDIR += p5-WWW-Shorten-isgd SUBDIR += p5-WWW-SourceForge SUBDIR += p5-WWW-Spinn3r SUBDIR += p5-WWW-TV SUBDIR += p5-WWW-TWSMS SUBDIR += p5-WWW-TinySong SUBDIR += p5-WWW-Tumblr SUBDIR += p5-WWW-VenusEnvy SUBDIR += p5-WWW-WebArchive SUBDIR += p5-WWW-Wikipedia SUBDIR += p5-WWW-Yandex-TIC SUBDIR += p5-WWW-iTunesConnect SUBDIR += p5-Web-Query SUBDIR += p5-Web-Scraper SUBDIR += p5-Web-Scraper-Config SUBDIR += p5-Web-Simple SUBDIR += p5-Web-oEmbed SUBDIR += p5-WebDAO SUBDIR += p5-WebDriver-Tiny SUBDIR += p5-WebService-Basecamp SUBDIR += p5-WebService-Bloglines SUBDIR += p5-WebService-BuzzurlAPI SUBDIR += p5-WebService-CIA SUBDIR += p5-WebService-GData SUBDIR += p5-WebService-Google-Reader SUBDIR += p5-WebService-Google-Sets SUBDIR += p5-WebService-IMDB SUBDIR += p5-WebService-ISBNDB SUBDIR += p5-WebService-Linode SUBDIR += p5-WebService-MoviePosterDB SUBDIR += p5-WebService-MusicBrainz SUBDIR += p5-WebService-MusicBrainz0 SUBDIR += p5-WebService-NoPaste SUBDIR += p5-WebService-Pushover SUBDIR += p5-WebService-Rakuten SUBDIR += p5-WebService-Redmine SUBDIR += p5-WebService-Simple SUBDIR += p5-WebService-Technorati SUBDIR += p5-WebService-YouTube SUBDIR += p5-WordPress-XMLRPC SUBDIR += p5-Yahoo-Search SUBDIR += p5-chklinks SUBDIR += p5-jQuery-File-Upload SUBDIR += p5-libapreq2 SUBDIR += p5-libservlet SUBDIR += p5-libwww SUBDIR += p5-pQuery SUBDIR += p5-webservice-validator-css-w3c SUBDIR += p5-webservice-validator-html-w3c SUBDIR += palemoon SUBDIR += paros SUBDIR += payara SUBDIR += pear-HTML_AJAX SUBDIR += pear-HTML_TagCloud SUBDIR += pear-HTTP SUBDIR += pear-HTTP_Client SUBDIR += pear-HTTP_Download SUBDIR += pear-HTTP_FloodControl SUBDIR += pear-HTTP_Header SUBDIR += pear-HTTP_Request SUBDIR += pear-HTTP_Request2 SUBDIR += pear-HTTP_Server SUBDIR += pear-HTTP_Session2 SUBDIR += pear-HTTP_Upload SUBDIR += pear-HTTP_WebDAV_Client SUBDIR += pear-HTTP_WebDAV_Server SUBDIR += pear-Horde_Browser SUBDIR += pear-Horde_Css_Parser SUBDIR += pear-Horde_Dav SUBDIR += pear-Horde_Editor SUBDIR += pear-Horde_Feed SUBDIR += pear-Horde_Form SUBDIR += pear-Horde_Http SUBDIR += pear-Horde_Routes SUBDIR += pear-Horde_Service_Facebook SUBDIR += pear-Horde_Service_Gravatar SUBDIR += pear-Horde_Service_Twitter SUBDIR += pear-Horde_Service_UrlShortener SUBDIR += pear-Horde_Service_Weather SUBDIR += pear-Horde_SessionHandler SUBDIR += pear-Horde_Template SUBDIR += pear-Services_Amazon SUBDIR += pear-Services_Amazon_S3 SUBDIR += pear-Services_Blogging SUBDIR += pear-Services_Compete SUBDIR += pear-Services_Delicious SUBDIR += pear-Services_Digg SUBDIR += pear-Services_Facebook SUBDIR += pear-Services_GeoNames SUBDIR += pear-Services_Google SUBDIR += pear-Services_OpenSearch SUBDIR += pear-Services_ShortURL SUBDIR += pear-Services_TinyURL SUBDIR += pear-Services_TwitPic SUBDIR += pear-Services_W3C_CSSValidator SUBDIR += pear-Services_W3C_HTMLValidator SUBDIR += pear-Services_Yadis SUBDIR += pear-Services_Yahoo SUBDIR += pear-Services_urlTea SUBDIR += pear-Structures_DataGrid_Renderer_Flexy SUBDIR += pear-Structures_DataGrid_Renderer_Pager SUBDIR += pear-Structures_DataGrid_Renderer_Smarty SUBDIR += pear-Text_Wiki SUBDIR += pear-UDDI SUBDIR += pear-XML_GRDDL SUBDIR += pear-twig SUBDIR += pebble SUBDIR += pecl-amfext SUBDIR += pecl-http SUBDIR += pecl-http1 SUBDIR += pecl-http2 SUBDIR += pecl-solr SUBDIR += pecl-sphinx SUBDIR += pecl-swish SUBDIR += pecl-twig SUBDIR += pecl-yaf SUBDIR += pecl-yaf2 SUBDIR += pecl-yar SUBDIR += pecl-yar1 SUBDIR += perlbal SUBDIR += pglogd SUBDIR += phalcon SUBDIR += photo_gallery SUBDIR += php-screw SUBDIR += php-templates SUBDIR += php56-opcache SUBDIR += php56-session SUBDIR += php56-tidy SUBDIR += php70-opcache SUBDIR += php70-session SUBDIR += php70-tidy SUBDIR += php71-opcache SUBDIR += php71-session SUBDIR += php71-tidy SUBDIR += php72-opcache SUBDIR += php72-session SUBDIR += php72-tidy SUBDIR += phpbb SUBDIR += phpbb3 SUBDIR += phpgroupware SUBDIR += phpmustache SUBDIR += phpmyfaq SUBDIR += phprecipebook SUBDIR += phproxy SUBDIR += phpsysinfo SUBDIR += phpvirtualbox SUBDIR += pivotx SUBDIR += piwigo SUBDIR += planet SUBDIR += plasma5-plasma-browser-integration SUBDIR += plexwatchweb SUBDIR += plone SUBDIR += plugger SUBDIR += pmwiki SUBDIR += pnews SUBDIR += podcastamatic SUBDIR += polipo SUBDIR += pound SUBDIR += privatebin SUBDIR += privoxy SUBDIR += protovis SUBDIR += pserv SUBDIR += publicfile SUBDIR += punbb SUBDIR += pwebstats SUBDIR += py-HTMLgen SUBDIR += py-MechanicalSoup SUBDIR += py-Products.CMFPlone SUBDIR += py-Products.PloneLDAP SUBDIR += py-Products.TinyMCE SUBDIR += py-Tenjin SUBDIR += py-WebError SUBDIR += py-WebFlash SUBDIR += py-WebTest SUBDIR += py-aioh2 SUBDIR += py-aiohttp SUBDIR += py-aiohttp-wsgi SUBDIR += py-albatross SUBDIR += py-amf SUBDIR += py-apachelog SUBDIR += py-arxiv SUBDIR += py-autobahn SUBDIR += py-aws-requests-auth SUBDIR += py-azure-common SUBDIR += py-azure-storage SUBDIR += py-beaker SUBDIR += py-beautifulsoup SUBDIR += py-beautifulsoup32 SUBDIR += py-bjoern SUBDIR += py-bleach SUBDIR += py-blogofile SUBDIR += py-bokeh SUBDIR += py-boto3 SUBDIR += py-bottle SUBDIR += py-bottle-cork SUBDIR += py-branca SUBDIR += py-cachecontrol SUBDIR += py-caldav SUBDIR += py-cheroot SUBDIR += py-cherrypy SUBDIR += py-cherrypy-old SUBDIR += py-clientform SUBDIR += py-collective.easytemplate SUBDIR += py-collective.templateengines SUBDIR += py-cookies SUBDIR += py-cssmin SUBDIR += py-cssselect SUBDIR += py-cssutils SUBDIR += py-ddgr SUBDIR += py-django SUBDIR += py-django-allauth SUBDIR += py-django-annotations SUBDIR += py-django-annoying SUBDIR += py-django-appconf SUBDIR += py-django-appmedia SUBDIR += py-django-assets SUBDIR += py-django-auth-ldap SUBDIR += py-django-babel SUBDIR += py-django-bitfield SUBDIR += py-django-bootstrap-form SUBDIR += py-django-braces SUBDIR += py-django-bulk-update SUBDIR += py-django-caching-app-plugins SUBDIR += py-django-classy-tags SUBDIR += py-django-cms SUBDIR += py-django-configurations SUBDIR += py-django-constance SUBDIR += py-django-contact-form SUBDIR += py-django-contrib-comments SUBDIR += py-django-cors-headers SUBDIR += py-django-countries SUBDIR += py-django-crispy-forms SUBDIR += py-django-datetime-widget SUBDIR += py-django-debug-toolbar SUBDIR += py-django-dpaste SUBDIR += py-django-evolution SUBDIR += py-django-extensions SUBDIR += py-django-filer SUBDIR += py-django-filter SUBDIR += py-django-formtools SUBDIR += py-django-guardian SUBDIR += py-django-happenings SUBDIR += py-django-haystack SUBDIR += py-django-hijack SUBDIR += py-django-htmlmin SUBDIR += py-django-js-asset SUBDIR += py-django-json-rpc SUBDIR += py-django-jsonfield SUBDIR += py-django-jsonfield2 SUBDIR += py-django-ldapdb SUBDIR += py-django-markdownx SUBDIR += py-django-markwhat SUBDIR += py-django-mezzanine SUBDIR += py-django-mezzanine-filebrowser SUBDIR += py-django-mezzanine-grappelli SUBDIR += py-django-model-utils SUBDIR += py-django-modern-rpc SUBDIR += py-django-mptt SUBDIR += py-django-netfields SUBDIR += py-django-openid-auth SUBDIR += py-django-otp SUBDIR += py-django-otp-yubikey SUBDIR += py-django-overextends SUBDIR += py-django-paging SUBDIR += py-django-photologue SUBDIR += py-django-picklefield SUBDIR += py-django-pipeline SUBDIR += py-django-post_office SUBDIR += py-django-profiles SUBDIR += py-django-pyscss SUBDIR += py-django-ranged-response SUBDIR += py-django-recaptcha SUBDIR += py-django-redis SUBDIR += py-django-registration SUBDIR += py-django-registration-defaults SUBDIR += py-django-registration-redux SUBDIR += py-django-rest-swagger SUBDIR += py-django-reversion SUBDIR += py-django-sekizai SUBDIR += py-django-simple-captcha SUBDIR += py-django-simple-history SUBDIR += py-django-solo SUBDIR += py-django-sortedm2m SUBDIR += py-django-star-ratings SUBDIR += py-django-statici18n SUBDIR += py-django-storages SUBDIR += py-django-subdomains SUBDIR += py-django-sudo SUBDIR += py-django-tables2 SUBDIR += py-django-tagging SUBDIR += py-django-taggit SUBDIR += py-django-taggit-serializer SUBDIR += py-django-tastypie SUBDIR += py-django-templatetag-sugar SUBDIR += py-django-timezone-field SUBDIR += py-django-tinymce SUBDIR += py-django-treebeard SUBDIR += py-django-voting SUBDIR += py-django-webpack-loader SUBDIR += py-django-widget-tweaks SUBDIR += py-django111 SUBDIR += py-django20 SUBDIR += py-django21 SUBDIR += py-django_compressor SUBDIR += py-django_openstack_auth SUBDIR += py-django_polymorphic SUBDIR += py-djangocms-admin-style SUBDIR += py-djangorestframework SUBDIR += py-djangorestframework-csv SUBDIR += py-djangorestframework-filters SUBDIR += py-djangorestframework-xml SUBDIR += py-djangorestframework36 SUBDIR += py-djangotoolbox SUBDIR += py-dojango SUBDIR += py-drf-yasg SUBDIR += py-dtflickr SUBDIR += py-evernote SUBDIR += py-falcon SUBDIR += py-fcgi SUBDIR += py-fedex SUBDIR += py-feedgenerator SUBDIR += py-flask SUBDIR += py-flask-admin SUBDIR += py-flask-api SUBDIR += py-flask-apscheduler SUBDIR += py-flask-assets SUBDIR += py-flask-bootstrap SUBDIR += py-flask-cache SUBDIR += py-flask-compress SUBDIR += py-flask-cors SUBDIR += py-flask-flatpages SUBDIR += py-flask-login SUBDIR += py-flask-marshmallow SUBDIR += py-flask-migrate SUBDIR += py-flask-moment SUBDIR += py-flask-oauthlib SUBDIR += py-flask-principal SUBDIR += py-flask-restful SUBDIR += py-flask-restplus SUBDIR += py-flask-script SUBDIR += py-flask-socketio SUBDIR += py-flask-sockets SUBDIR += py-flask-uploads SUBDIR += py-flask-wtf SUBDIR += py-flexget SUBDIR += py-flup6 SUBDIR += py-folium SUBDIR += py-formalchemy SUBDIR += py-formencode SUBDIR += py-frappe-bench SUBDIR += py-frozen-flask SUBDIR += py-funkload SUBDIR += py-gandi.cli SUBDIR += py-gevent-websocket SUBDIR += py-goobook SUBDIR += py-google SUBDIR += py-google-api-core SUBDIR += py-google-api-python-client SUBDIR += py-google-cloud-core SUBDIR += py-google-cloud-storage SUBDIR += py-google-cloud-translate SUBDIR += py-google-resumable-media SUBDIR += py-graphite-api SUBDIR += py-graphite-web SUBDIR += py-grequests SUBDIR += py-grip SUBDIR += py-gunicorn SUBDIR += py-h2 SUBDIR += py-horizon SUBDIR += py-hpack SUBDIR += py-html SUBDIR += py-html5-parser SUBDIR += py-html5lib SUBDIR += py-httmock SUBDIR += py-http-parser SUBDIR += py-httpie SUBDIR += py-httplib2 SUBDIR += py-hyper SUBDIR += py-hyperframe SUBDIR += py-hyperlink SUBDIR += py-imdbpy SUBDIR += py-internetarchive SUBDIR += py-jonpy SUBDIR += py-jsonfield SUBDIR += py-jswebkit SUBDIR += py-kallithea SUBDIR += py-lesscpy SUBDIR += py-libsass SUBDIR += py-livereload SUBDIR += py-mechanize SUBDIR += py-meld SUBDIR += py-meld3 SUBDIR += py-mt SUBDIR += py-multidict SUBDIR += py-mwoauth SUBDIR += py-nevow SUBDIR += py-notebook SUBDIR += py-pafy SUBDIR += py-paste SUBDIR += py-pastedeploy SUBDIR += py-pastescript SUBDIR += py-path-and-address SUBDIR += py-pelican SUBDIR += py-planet SUBDIR += py-plone.alterego SUBDIR += py-plone.app.blob SUBDIR += py-plone.app.caching SUBDIR += py-plone.app.collection SUBDIR += py-plone.app.content SUBDIR += py-plone.app.contentlisting SUBDIR += py-plone.app.contentmenu SUBDIR += py-plone.app.contentrules SUBDIR += py-plone.app.controlpanel SUBDIR += py-plone.app.customerize SUBDIR += py-plone.app.dexterity SUBDIR += py-plone.app.discussion SUBDIR += py-plone.app.folder SUBDIR += py-plone.app.form SUBDIR += py-plone.app.i18n SUBDIR += py-plone.app.imaging SUBDIR += py-plone.app.iterate SUBDIR += py-plone.app.jquery SUBDIR += py-plone.app.jquerytools SUBDIR += py-plone.app.layout SUBDIR += py-plone.app.ldap SUBDIR += py-plone.app.linkintegrity SUBDIR += py-plone.app.locales SUBDIR += py-plone.app.portlets SUBDIR += py-plone.app.querystring SUBDIR += py-plone.app.redirector SUBDIR += py-plone.app.registry SUBDIR += py-plone.app.search SUBDIR += py-plone.app.testing SUBDIR += py-plone.app.textfield SUBDIR += py-plone.app.theming SUBDIR += py-plone.app.upgrade SUBDIR += py-plone.app.users SUBDIR += py-plone.app.uuid SUBDIR += py-plone.app.viewletmanager SUBDIR += py-plone.app.vocabularies SUBDIR += py-plone.app.workflow SUBDIR += py-plone.app.z3cform SUBDIR += py-plone.autoform SUBDIR += py-plone.batching SUBDIR += py-plone.behavior SUBDIR += py-plone.browserlayer SUBDIR += py-plone.cachepurging SUBDIR += py-plone.caching SUBDIR += py-plone.contentrules SUBDIR += py-plone.dexterity SUBDIR += py-plone.fieldsets SUBDIR += py-plone.folder SUBDIR += py-plone.formwidget.namedfile SUBDIR += py-plone.i18n SUBDIR += py-plone.indexer SUBDIR += py-plone.intelligenttext SUBDIR += py-plone.locking SUBDIR += py-plone.memoize SUBDIR += py-plone.namedfile SUBDIR += py-plone.outputfilters SUBDIR += py-plone.portlet.collection SUBDIR += py-plone.portlet.static SUBDIR += py-plone.portlets SUBDIR += py-plone.registry SUBDIR += py-plone.resource SUBDIR += py-plone.resourceeditor SUBDIR += py-plone.rfc822 SUBDIR += py-plone.scale SUBDIR += py-plone.schemaeditor SUBDIR += py-plone.stringinterp SUBDIR += py-plone.subrequest SUBDIR += py-plone.supermodel SUBDIR += py-plone.synchronize SUBDIR += py-plone.testing SUBDIR += py-plone.theme SUBDIR += py-plone.transformchain SUBDIR += py-plone.uuid SUBDIR += py-plone.z3cform SUBDIR += py-plonetheme.classic SUBDIR += py-plonetheme.sunburst SUBDIR += py-poster SUBDIR += py-praw SUBDIR += py-prewikka SUBDIR += py-priority SUBDIR += py-puppetboard SUBDIR += py-puppetboard02 SUBDIR += py-puppetboard03 SUBDIR += py-py-restclient SUBDIR += py-pySmartDL SUBDIR += py-pyjwt SUBDIR += py-pylons SUBDIR += py-pyocclient SUBDIR += py-pyquery SUBDIR += py-pyramid SUBDIR += py-pyramid_rpc SUBDIR += py-pysearch SUBDIR += py-python-digitalocean SUBDIR += py-python-dotenv SUBDIR += py-pywebdav SUBDIR += py-pyweblib SUBDIR += py-pywikibot SUBDIR += py-qp SUBDIR += py-qpy SUBDIR += py-qt4-webkit SUBDIR += py-qt5-webchannel SUBDIR += py-qt5-webengine SUBDIR += py-qt5-webkit SUBDIR += py-qt5-webkitwidgets SUBDIR += py-rackspace-monitoring SUBDIR += py-recaptcha SUBDIR += py-requestbuilder SUBDIR += py-requests SUBDIR += py-requests-cache SUBDIR += py-requests-file SUBDIR += py-requests-futures SUBDIR += py-requests-mock SUBDIR += py-requests-oauthlib SUBDIR += py-requests-toolbelt SUBDIR += py-requests1 SUBDIR += py-requests_ntlm SUBDIR += py-restclient SUBDIR += py-rfc3986 SUBDIR += py-rfc3987 SUBDIR += py-rhodecode SUBDIR += py-rollbar SUBDIR += py-routes SUBDIR += py-scgi SUBDIR += py-scrapy SUBDIR += py-seafdav SUBDIR += py-seafobj SUBDIR += py-selector SUBDIR += py-selenium SUBDIR += py-slimit SUBDIR += py-slimmer SUBDIR += py-slumber SUBDIR += py-sockjs-tornado SUBDIR += py-splinter SUBDIR += py-spyne SUBDIR += py-sseclient SUBDIR += py-surl SUBDIR += py-swapper SUBDIR += py-textile SUBDIR += py-tmdb3 SUBDIR += py-tornado SUBDIR += py-tornado4 SUBDIR += py-trello SUBDIR += py-treq SUBDIR += py-turbogears2 SUBDIR += py-tvdb_api SUBDIR += py-txrequests SUBDIR += py-uliweb SUBDIR += py-unit SUBDIR += py-url SUBDIR += py-urlgrabber SUBDIR += py-urlobject SUBDIR += py-user_agent SUBDIR += py-utidylib SUBDIR += py-w3lib SUBDIR += py-waitress SUBDIR += py-webassets SUBDIR += py-webhelpers SUBDIR += py-webkitgtk SUBDIR += py-webob SUBDIR += py-weboob SUBDIR += py-websocket-client SUBDIR += py-webunit SUBDIR += py-werkzeug SUBDIR += py-wfuzz SUBDIR += py-wikipedia SUBDIR += py-wikitools SUBDIR += py-ws4py SUBDIR += py-wsaccel SUBDIR += py-wsgiauth SUBDIR += py-wsgidav SUBDIR += py-yarl SUBDIR += py-zope.app.wsgi SUBDIR += pyblosxom SUBDIR += pycarddav SUBDIR += pyjamas SUBDIR += qdecoder SUBDIR += qhttpengine SUBDIR += qooxdoo SUBDIR += qt4-webkit SUBDIR += qt5-webchannel SUBDIR += qt5-webengine SUBDIR += qt5-webkit SUBDIR += qt5-websockets SUBDIR += qt5-websockets-qml SUBDIR += quark SUBDIR += qupzilla-qt4 SUBDIR += qupzilla-qt5 SUBDIR += qutebrowser SUBDIR += radicale SUBDIR += radicale2 SUBDIR += red5 SUBDIR += redaxo SUBDIR += redmine SUBDIR += redmine-a_common_libs SUBDIR += redmine-backlogs SUBDIR += redmine-basecamp SUBDIR += redmine-default_assign SUBDIR += redmine-graphs SUBDIR += redmine-http-auth SUBDIR += redmine-issue_templates SUBDIR += redmine-knowledgebase SUBDIR += redmine-ldap_sync SUBDIR += redmine-qa_contact SUBDIR += redmine-redcarpet_formatter SUBDIR += redmine-sidebar_hide SUBDIR += redmine-single_auth SUBDIR += redmine-wiki_notes SUBDIR += rejik SUBDIR += rekonq SUBDIR += reportmagic SUBDIR += repos-style SUBDIR += resin3 SUBDIR += restbed SUBDIR += retawq SUBDIR += revive-adserver SUBDIR += rnews SUBDIR += roundup SUBDIR += rsskit SUBDIR += rssowl SUBDIR += rssroll SUBDIR += rsstail SUBDIR += rsstool SUBDIR += rt42 SUBDIR += rt44 SUBDIR += rtv SUBDIR += rubygem-ace-rails-ap SUBDIR += rubygem-actioncable5 SUBDIR += rubygem-actioncable50 SUBDIR += rubygem-actionpack4 SUBDIR += rubygem-actionpack5 SUBDIR += rubygem-actionpack50 SUBDIR += rubygem-activeresource4 SUBDIR += rubygem-activeresource5 SUBDIR += rubygem-acts-as-taggable-on SUBDIR += rubygem-acts-as-taggable-on3 SUBDIR += rubygem-acts-as-taggable-on5 SUBDIR += rubygem-acts_as_taggable SUBDIR += rubygem-addressable SUBDIR += rubygem-addressable23 SUBDIR += rubygem-adsf SUBDIR += rubygem-akami SUBDIR += rubygem-amazon-ecs SUBDIR += rubygem-anemone SUBDIR += rubygem-asana SUBDIR += rubygem-async_sinatra SUBDIR += rubygem-best_in_place SUBDIR += rubygem-best_in_place-rails5 SUBDIR += rubygem-bluecloth SUBDIR += rubygem-bootstrap-sass SUBDIR += rubygem-browser SUBDIR += rubygem-cal-heatmap-rails SUBDIR += rubygem-cal-heatmap-rails-rails4 SUBDIR += rubygem-carrierwave SUBDIR += rubygem-cgi_multipart_eof_fix SUBDIR += rubygem-chosen-rails SUBDIR += rubygem-cookiejar SUBDIR += rubygem-crass SUBDIR += rubygem-cuba SUBDIR += rubygem-d3_rails SUBDIR += rubygem-d3_rails-rails4 SUBDIR += rubygem-dashing SUBDIR += rubygem-davclient SUBDIR += rubygem-deckar01-task_list SUBDIR += rubygem-domainatrix SUBDIR += rubygem-dropzonejs-rails SUBDIR += rubygem-dropzonejs-rails07 SUBDIR += rubygem-em-http-request SUBDIR += rubygem-em-socksify SUBDIR += rubygem-em-twitter SUBDIR += rubygem-em-websocket SUBDIR += rubygem-emk-sinatra-url-for SUBDIR += rubygem-erubi SUBDIR += rubygem-erubis SUBDIR += rubygem-ethon SUBDIR += rubygem-eventmachine_httpserver SUBDIR += rubygem-faraday SUBDIR += rubygem-faraday_middleware SUBDIR += rubygem-faye SUBDIR += rubygem-faye-websocket SUBDIR += rubygem-fcgi SUBDIR += rubygem-feed-normalizer SUBDIR += rubygem-feedjira SUBDIR += rubygem-flowdock SUBDIR += rubygem-fuzzyurl SUBDIR += rubygem-geminabox SUBDIR += rubygem-gitlab-flowdock-git-hook SUBDIR += rubygem-gitlab-gollum-lib SUBDIR += rubygem-gitlab-gollum-rugged_adapter SUBDIR += rubygem-gitlab-grack SUBDIR += rubygem-gitlab-turbolinks-classic SUBDIR += rubygem-goldfinger SUBDIR += rubygem-gollum SUBDIR += rubygem-gollum-grit_adapter SUBDIR += rubygem-gollum-grit_adapter10 SUBDIR += rubygem-gollum-lib SUBDIR += rubygem-gollum-rugged_adapter SUBDIR += rubygem-gon SUBDIR += rubygem-hackpad-cli SUBDIR += rubygem-haml SUBDIR += rubygem-haml-coderay SUBDIR += rubygem-haml-contrib SUBDIR += rubygem-haml-rails-rails4 SUBDIR += rubygem-haml4 SUBDIR += rubygem-hamlit SUBDIR += rubygem-hamlit-rails SUBDIR += rubygem-hamlit-rails-rails5 SUBDIR += rubygem-hamlit-rails-rails50 SUBDIR += rubygem-hashicorp-checkpoint SUBDIR += rubygem-heroku SUBDIR += rubygem-heroku-api SUBDIR += rubygem-heroku-nav SUBDIR += rubygem-hpricot SUBDIR += rubygem-html2haml SUBDIR += rubygem-http SUBDIR += rubygem-http-cookie SUBDIR += rubygem-http-form_data SUBDIR += rubygem-http-form_data1 SUBDIR += rubygem-http_router SUBDIR += rubygem-httparty SUBDIR += rubygem-httpclient SUBDIR += rubygem-httpi SUBDIR += rubygem-hurley SUBDIR += rubygem-innate SUBDIR += rubygem-jekyll SUBDIR += rubygem-jekyll-sanity SUBDIR += rubygem-jekyll-watch SUBDIR += rubygem-journey SUBDIR += rubygem-jquery-atwho-rails SUBDIR += rubygem-jquery-atwho-rails13 SUBDIR += rubygem-jquery-rails SUBDIR += rubygem-jquery-rails-rails5 SUBDIR += rubygem-jquery-rails-rails50 SUBDIR += rubygem-jquery-scrollto-rails SUBDIR += rubygem-jquery-turbolinks SUBDIR += rubygem-jquery-ui-rails-rails4 SUBDIR += rubygem-jruby-rack SUBDIR += rubygem-jsobfu SUBDIR += rubygem-json-jwt SUBDIR += rubygem-jwt SUBDIR += rubygem-jwt1 SUBDIR += rubygem-kaminari SUBDIR += rubygem-kaminari-actionview SUBDIR += rubygem-kaminari-actionview-rails5 SUBDIR += rubygem-kaminari-actionview-rails50 SUBDIR += rubygem-kaminari-activerecord SUBDIR += rubygem-kaminari-activerecord-rails5 SUBDIR += rubygem-kaminari-activerecord-rails50 SUBDIR += rubygem-kaminari-core SUBDIR += rubygem-kaminari-rails4 SUBDIR += rubygem-kaminari-rails5 SUBDIR += rubygem-kaminari-rails50 SUBDIR += rubygem-kensa SUBDIR += rubygem-kubeclient SUBDIR += rubygem-layout_yullio_generator SUBDIR += rubygem-less SUBDIR += rubygem-lighthouse-api SUBDIR += rubygem-link_header SUBDIR += rubygem-lograge SUBDIR += rubygem-lograge-rails5 SUBDIR += rubygem-lograge-rails50 SUBDIR += rubygem-maruku SUBDIR += rubygem-mechanize SUBDIR += rubygem-merb-assets SUBDIR += rubygem-merb-core SUBDIR += rubygem-merb-haml SUBDIR += rubygem-merb-helpers SUBDIR += rubygem-merb-param-protection SUBDIR += rubygem-mousetrap-rails SUBDIR += rubygem-multipart-post SUBDIR += rubygem-nanoc SUBDIR += rubygem-nested_form SUBDIR += rubygem-net-http-digest_auth SUBDIR += rubygem-net-http-persistent SUBDIR += rubygem-net-http-persistent2 SUBDIR += rubygem-net-http-pipeline SUBDIR += rubygem-nicovideo SUBDIR += rubygem-ntlm-http SUBDIR += rubygem-octopress SUBDIR += rubygem-oembed SUBDIR += rubygem-ostatus2 SUBDIR += rubygem-pagerduty SUBDIR += rubygem-passenger SUBDIR += rubygem-puma SUBDIR += rubygem-pusher-client SUBDIR += rubygem-rabbirack SUBDIR += rubygem-rack SUBDIR += rubygem-rack-accept SUBDIR += rubygem-rack-attack SUBDIR += rubygem-rack-attack44 SUBDIR += rubygem-rack-cache SUBDIR += rubygem-rack-contrib SUBDIR += rubygem-rack-cors SUBDIR += rubygem-rack-cors0 SUBDIR += rubygem-rack-mount SUBDIR += rubygem-rack-openid SUBDIR += rubygem-rack-protection SUBDIR += rubygem-rack-protection1 SUBDIR += rubygem-rack-proxy SUBDIR += rubygem-rack-ssl SUBDIR += rubygem-rack-test SUBDIR += rubygem-rack-timeout SUBDIR += rubygem-rack15 SUBDIR += rubygem-rack16 SUBDIR += rubygem-rack_csrf SUBDIR += rubygem-rails-settings-cached SUBDIR += rubygem-rails-settings-cached-rails5 SUBDIR += rubygem-rails-settings-cached-rails50 SUBDIR += rubygem-rails4 SUBDIR += rubygem-rails5 SUBDIR += rubygem-rails50 SUBDIR += rubygem-rails_12factor SUBDIR += rubygem-rails_autolink SUBDIR += rubygem-rails_serve_static_assets SUBDIR += rubygem-rails_stdout_logging SUBDIR += rubygem-railties4 SUBDIR += rubygem-railties5 SUBDIR += rubygem-railties50 SUBDIR += rubygem-raindrops SUBDIR += rubygem-ramaze SUBDIR += rubygem-raphael-rails SUBDIR += rubygem-rbovirt SUBDIR += rubygem-rdf SUBDIR += rubygem-rdf-normalize SUBDIR += rubygem-redcloth SUBDIR += rubygem-redis-rack SUBDIR += rubygem-redis-rack1 SUBDIR += rubygem-redis-rails SUBDIR += rubygem-redis-rails-rails5 SUBDIR += rubygem-redis-rails-rails50 SUBDIR += rubygem-redmine_acts_as_taggable_on SUBDIR += rubygem-responders SUBDIR += rubygem-responders-rails5 SUBDIR += rubygem-responders-rails50 SUBDIR += rubygem-rest-client SUBDIR += rubygem-rfacebook SUBDIR += rubygem-rfeedfinder SUBDIR += rubygem-rinku SUBDIR += rubygem-rkelly-remix SUBDIR += rubygem-robotex SUBDIR += rubygem-robots SUBDIR += rubygem-roda SUBDIR += rubygem-rqrcode SUBDIR += rubygem-rqrcode-rails3 SUBDIR += rubygem-rtlit SUBDIR += rubygem-ruby-oembed SUBDIR += rubygem-ruby-readability SUBDIR += rubygem-savon SUBDIR += rubygem-sawyer SUBDIR += rubygem-select2-rails SUBDIR += rubygem-select2-rails3 SUBDIR += rubygem-selenium-webdriver SUBDIR += rubygem-semantic-ui-sass SUBDIR += rubygem-simple-rss SUBDIR += rubygem-sinatra SUBDIR += rubygem-sinatra-contrib SUBDIR += rubygem-sinatra-contrib1 SUBDIR += rubygem-sinatra-r18n SUBDIR += rubygem-sinatra-respond_to SUBDIR += rubygem-sinatra1 SUBDIR += rubygem-smashing SUBDIR += rubygem-socksify SUBDIR += rubygem-task_list SUBDIR += rubygem-thin SUBDIR += rubygem-tinyatom SUBDIR += rubygem-tinymce-rails SUBDIR += rubygem-toml-rb SUBDIR += rubygem-toml-rb03 SUBDIR += rubygem-toml-rb10 SUBDIR += rubygem-totoridipjp SUBDIR += rubygem-tumblr_client SUBDIR += rubygem-turbolinks SUBDIR += rubygem-turbolinks-rails5 SUBDIR += rubygem-turbolinks-rails50 SUBDIR += rubygem-turbolinks-source SUBDIR += rubygem-typhoeus SUBDIR += rubygem-uglifier SUBDIR += rubygem-uglifier27 SUBDIR += rubygem-underscore-rails SUBDIR += rubygem-unicorn SUBDIR += rubygem-unicorn-worker-killer SUBDIR += rubygem-unicorn-worker-killer044 SUBDIR += rubygem-unicorn51 SUBDIR += rubygem-url_escape SUBDIR += rubygem-url_mount SUBDIR += rubygem-vegas SUBDIR += rubygem-wasabi SUBDIR += rubygem-webkit-gtk SUBDIR += rubygem-webkit-gtk2 SUBDIR += rubygem-webmock SUBDIR += rubygem-webpack-rails SUBDIR += rubygem-webrobots SUBDIR += rubygem-websocket SUBDIR += rubygem-websocket-driver SUBDIR += rubygem-websocket-extensions SUBDIR += rubygem-yapra SUBDIR += sabredav SUBDIR += sahi SUBDIR += sakai SUBDIR += sams2 SUBDIR += sarg SUBDIR += scloader SUBDIR += script4rss SUBDIR += seahub SUBDIR += seamonkey SUBDIR += seamonkey-i18n SUBDIR += searx SUBDIR += selenium SUBDIR += serendipity SUBDIR += serf SUBDIR += servlet-api SUBDIR += sfnt2woff SUBDIR += shellinabox SUBDIR += shttpd SUBDIR += sit SUBDIR += sitebar SUBDIR += sitecopy SUBDIR += skytemplate SUBDIR += slowcgi SUBDIR += smarty2 SUBDIR += smarty3 SUBDIR += smb_auth SUBDIR += snarf SUBDIR += sogo2 SUBDIR += sogo2-activesync SUBDIR += sogo3 SUBDIR += sogo3-activesync SUBDIR += sogo4 SUBDIR += sogo4-activesync SUBDIR += spawn-fcgi SUBDIR += spdylay SUBDIR += spreadlogd SUBDIR += sqstat SUBDIR += squid SUBDIR += squid-devel SUBDIR += squid3 SUBDIR += squid_radius_auth SUBDIR += squidanalyzer SUBDIR += squidclamav SUBDIR += squidguard SUBDIR += squidpurge SUBDIR += squidview SUBDIR += srg SUBDIR += stagit SUBDIR += subsonic-standalone SUBDIR += suphp SUBDIR += surf SUBDIR += surfraw SUBDIR += swfdec-plugin SUBDIR += swiggle SUBDIR += swish++ SUBDIR += swish-e SUBDIR += sws SUBDIR += syndigator SUBDIR += tclhttpd SUBDIR += tclwebtest SUBDIR += tdiary SUBDIR += tdom SUBDIR += template_ SUBDIR += templatelite SUBDIR += testlink SUBDIR += thttpd SUBDIR += thumbnail_index SUBDIR += thundercache SUBDIR += thundersnarf SUBDIR += tickr SUBDIR += tidy SUBDIR += tidy-devel SUBDIR += tidy-html5 SUBDIR += tidy-lib SUBDIR += tikiwiki SUBDIR += tinymce SUBDIR += tinyproxy SUBDIR += tinytinyhttpd SUBDIR += tivoka SUBDIR += tntnet SUBDIR += tokyopromenade SUBDIR += tomcat-native SUBDIR += tomcat6 SUBDIR += tomcat7 SUBDIR += tomcat8 SUBDIR += tomcat85 SUBDIR += tomcat9 SUBDIR += tomee SUBDIR += trac SUBDIR += trac-OhlohWidgetsMacro SUBDIR += trac-TracGoogleAnalytics SUBDIR += trac-accountmanager SUBDIR += trac-advancedticketworkflow SUBDIR += trac-attachmentpolicy SUBDIR += trac-autocomplete SUBDIR += trac-bzr SUBDIR += trac-ccselector SUBDIR += trac-childtickets SUBDIR += trac-customfieldadmin SUBDIR += trac-datefield SUBDIR += trac-defaultcc SUBDIR += trac-devel SUBDIR += trac-discussion SUBDIR += trac-downloads SUBDIR += trac-email2trac SUBDIR += trac-email2trac-postfix SUBDIR += trac-estimator SUBDIR += trac-fivestarvote SUBDIR += trac-fullblog SUBDIR += trac-fullblognotification SUBDIR += trac-gantt SUBDIR += trac-graphviz SUBDIR += trac-iniadmin SUBDIR += trac-keywords SUBDIR += trac-keywordsecretticket SUBDIR += trac-ldap SUBDIR += trac-ldapauthstore SUBDIR += trac-math SUBDIR += trac-mercurial SUBDIR += trac-navadd SUBDIR += trac-permredirect SUBDIR += trac-privatetickets SUBDIR += trac-pydotorgtheme SUBDIR += trac-scrumburndown SUBDIR += trac-spam-filter SUBDIR += trac-subtickets SUBDIR += trac-tags SUBDIR += trac-themeengine SUBDIR += trac-ticketimport SUBDIR += trac-tickettemplate SUBDIR += trac-timingandestimation SUBDIR += trac-tocmacro SUBDIR += trac-tracdragdrop SUBDIR += trac-tweakui SUBDIR += trac-vote SUBDIR += trac-watchlist SUBDIR += trac-wikigoodies SUBDIR += trac-wikinotification SUBDIR += trac-wikitemplates SUBDIR += trac-wikitopdf SUBDIR += trac-wysiwyg SUBDIR += trac-xmlrpc SUBDIR += trafficserver SUBDIR += transmission-web SUBDIR += transproxy SUBDIR += trytond28_google_maps SUBDIR += tt-rss SUBDIR += ttf2eot SUBDIR += twiki SUBDIR += twiki-BehaviourContrib SUBDIR += twiki-BlogAddOn SUBDIR += twiki-BugzillaLinkPlugin SUBDIR += twiki-ClassicSkin SUBDIR += twiki-CommentPlugin SUBDIR += twiki-EditTablePlugin SUBDIR += twiki-EmptyPlugin SUBDIR += twiki-GluePlugin SUBDIR += twiki-InterwikiPlugin SUBDIR += twiki-JSCalendarContrib SUBDIR += twiki-LDAPPasswordChangerPlugin SUBDIR += twiki-LdapContrib SUBDIR += twiki-LdapNgPlugin SUBDIR += twiki-MailerContrib SUBDIR += twiki-MathModePlugin SUBDIR += twiki-NewUserPlugin SUBDIR += twiki-PatternSkin SUBDIR += twiki-PreferencesPlugin SUBDIR += twiki-RenderListPlugin SUBDIR += twiki-SlideShowPlugin SUBDIR += twiki-SmiliesPlugin SUBDIR += twiki-SpreadSheetPlugin SUBDIR += twiki-SubscribePlugin SUBDIR += twiki-TWikiUserMappingContrib SUBDIR += twiki-TablePlugin SUBDIR += twiki-TagMePlugin SUBDIR += twiki-TinyMCEPlugin SUBDIR += twiki-TipsContrib SUBDIR += twiki-TopicVarsPlugin SUBDIR += twiki-TwistyContrib SUBDIR += twiki-TwistyPlugin SUBDIR += twiki-WysiwygPlugin SUBDIR += twill SUBDIR += twms SUBDIR += typo3-7 SUBDIR += typo3-8 SUBDIR += uchiwa SUBDIR += udmsearch SUBDIR += ufdbguard SUBDIR += unit SUBDIR += unit-go SUBDIR += unit-perl SUBDIR += unit-php SUBDIR += usermanager SUBDIR += uwsgi SUBDIR += uwsgitop SUBDIR += uzbl SUBDIR += validator SUBDIR += varnish-libvmod-awsrest SUBDIR += varnish-libvmod-digest SUBDIR += varnish-libvmod-maxminddb SUBDIR += varnish-modules SUBDIR += varnish-nagios SUBDIR += varnish4 SUBDIR += varnish5 SUBDIR += varnish6 SUBDIR += vdr-plugin-live SUBDIR += vdradmin-am SUBDIR += vee SUBDIR += vertx SUBDIR += vimb-gtk2 SUBDIR += vimb-gtk3 SUBDIR += visitors SUBDIR += volta SUBDIR += w3m SUBDIR += w3m-img SUBDIR += w3mir SUBDIR += waccess SUBDIR += wadcomblog - SUBDIR += waterfox SUBDIR += web2ldap SUBDIR += webalizer SUBDIR += webbrowser SUBDIR += webcheck SUBDIR += webcopy SUBDIR += webcrawl SUBDIR += webfs SUBDIR += webgo SUBDIR += webgrind SUBDIR += webhook SUBDIR += webinject SUBDIR += webkit-gtk2 SUBDIR += webkit-gtk3 SUBDIR += webkit-sharp SUBDIR += webkit2-gtk3 SUBDIR += weblint SUBDIR += weblint++ SUBDIR += webpy SUBDIR += webreport SUBDIR += webresolve SUBDIR += websh SUBDIR += websocat SUBDIR += websocketd SUBDIR += webstats SUBDIR += webstone SUBDIR += webstone-ssl SUBDIR += webtrees SUBDIR += wgetpaste SUBDIR += wikicalc SUBDIR += woof SUBDIR += wordpress SUBDIR += wsdlpull SUBDIR += wsmake SUBDIR += wt SUBDIR += wuzz SUBDIR += www6to4 SUBDIR += wwwoffle SUBDIR += xapian-omega SUBDIR += xapian-omega12 SUBDIR += xcache SUBDIR += xfce4-smartbookmark-plugin SUBDIR += xist SUBDIR += xombrero SUBDIR += xoops SUBDIR += xpi-adblock SUBDIR += xpi-adblock_plus SUBDIR += xpi-clear_cache_button SUBDIR += xpi-close-all-tabs SUBDIR += xpi-colorfultabs SUBDIR += xpi-conkeror SUBDIR += xpi-cssviewer SUBDIR += xpi-cutemenus-crystalsvg SUBDIR += xpi-default_full_zoom_level SUBDIR += xpi-delicious SUBDIR += xpi-downthemall SUBDIR += xpi-errorzilla SUBDIR += xpi-firebug SUBDIR += xpi-firefox-showcase SUBDIR += xpi-firemobilesimulator SUBDIR += xpi-fission SUBDIR += xpi-flagfox SUBDIR += xpi-flashblock SUBDIR += xpi-flashgot SUBDIR += xpi-flatbmark SUBDIR += xpi-forecastfox SUBDIR += xpi-formfox SUBDIR += xpi-foxmarks SUBDIR += xpi-foxyproxy SUBDIR += xpi-gdata_provider SUBDIR += xpi-ghostery SUBDIR += xpi-gmail-manager SUBDIR += xpi-google-notebook SUBDIR += xpi-google_shortcuts SUBDIR += xpi-grab_and_drag SUBDIR += xpi-greasemonkey SUBDIR += xpi-httpfox SUBDIR += xpi-imagezoom SUBDIR += xpi-imdbpreview SUBDIR += xpi-imglikeopera SUBDIR += xpi-infolister SUBDIR += xpi-informenter SUBDIR += xpi-inline-google-definitions SUBDIR += xpi-it_s_all_text SUBDIR += xpi-jslib SUBDIR += xpi-jsview SUBDIR += xpi-jv SUBDIR += xpi-leechblock SUBDIR += xpi-linkification SUBDIR += xpi-live_http_headers SUBDIR += xpi-live_pagerank SUBDIR += xpi-menueditor SUBDIR += xpi-modify_headers SUBDIR += xpi-mrtech-local-install SUBDIR += xpi-neo-diggler SUBDIR += xpi-no-referrer SUBDIR += xpi-passwordmaker SUBDIR += xpi-pdf_download SUBDIR += xpi-permatabs SUBDIR += xpi-quick-locale-switcher SUBDIR += xpi-quickproxy SUBDIR += xpi-resurrectpages SUBDIR += xpi-sameplace SUBDIR += xpi-scrapbook SUBDIR += xpi-searchstatus SUBDIR += xpi-server_spy SUBDIR += xpi-server_switcher SUBDIR += xpi-sessionmanager SUBDIR += xpi-showip SUBDIR += xpi-speed-dial SUBDIR += xpi-splash SUBDIR += xpi-stumbleupon SUBDIR += xpi-stylish SUBDIR += xpi-table2clipboard SUBDIR += xpi-tabmixplus SUBDIR += xpi-tagzilla SUBDIR += xpi-togglewordwrap SUBDIR += xpi-torbutton SUBDIR += xpi-twitterfox SUBDIR += xpi-u2f4moz SUBDIR += xpi-uBlock_origin SUBDIR += xpi-unplug SUBDIR += xpi-urllink SUBDIR += xpi-user_agent_switcher SUBDIR += xpi-vimperator SUBDIR += xpi-web_developer SUBDIR += xpi-wmlbrowser SUBDIR += xpi-xhtml-ruby-support SUBDIR += xpi-xmpp4moz SUBDIR += xpi-yslow SUBDIR += xshttpd SUBDIR += xshttpd-devel SUBDIR += xsp SUBDIR += yabb SUBDIR += yanopaste SUBDIR += yarn SUBDIR += yaws SUBDIR += you-get SUBDIR += yourls SUBDIR += youtube_dl SUBDIR += yuicompressor SUBDIR += zend-framework SUBDIR += zend-framework1 SUBDIR += zenphoto SUBDIR += zerowait-httpd SUBDIR += zope213 .include diff --git a/www/waterfox/Makefile b/www/waterfox/Makefile deleted file mode 100644 index 4afa9bb2ce3f..000000000000 --- a/www/waterfox/Makefile +++ /dev/null @@ -1,77 +0,0 @@ -# $FreeBSD$ - -PORTNAME= waterfox -DISTVERSION= 56.2.3 -PORTREVISION= 2 -CATEGORIES= www ipv6 - -MAINTAINER= jbeich@FreeBSD.org -COMMENT= Distilled fork of Firefox - -DEPRECATED= Temporary experiment -EXPIRATION_DATE=2018-09-27 - -BUILD_DEPENDS= nspr>=4.16:devel/nspr \ - nss>=3.32.1:security/nss \ - icu>=59.1,1:devel/icu \ - libevent>=2.1.8:devel/libevent \ - harfbuzz>=1.4.7: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 \ - ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \ - v4l_compat>0:multimedia/v4l_compat \ - autoconf-2.13:devel/autoconf213 \ - yasm:devel/yasm \ - zip:archivers/zip -# soundtouch>=1.9.0:audio/soundtouch \ - -LIB_DEPENDS= libv4l2.so:multimedia/libv4l - -USE_GITHUB= yes -GH_ACCOUNT= MrAlex94 -GH_PROJECT= Waterfox - -USE_GECKO= gecko -MOZ_PKGCONFIG_FILES= # empty -USE_MOZILLA= -soundtouch -MOZILLA_NAME= Waterfox - -USE_GL= gl - -WATERFOX_ICON= ${MOZILLA}.png -WATERFOX_ICON_SRC= ${PREFIX}/lib/${MOZILLA}/browser/chrome/icons/default/default256.png -WATERFOX_DESKTOP= ${MOZSRC}/taskcluster/docker/firefox-snap/firefox.desktop -MOZ_OPTIONS= --enable-application=browser \ - --with-app-name=${MOZILLA} \ - --with-app-basename=${MOZILLA_NAME} \ - --with-distribution-id=org.${MOZILLA}project - -OPTIONS_DEFAULT= BUNDLED_CAIRO - -.include "${.CURDIR}/../../www/firefox/Makefile.options" - -# Inconsistent fallback order (libcubeb vs. audio_device) -SNDIO_PREVENTS= ${OPTIONS_MULTI_AUDIO:NSNDIO} - -post-patch: - @${REINPLACE_CMD} -e 's/%u/%U/' -e '/X-MultipleArgs/d' \ - -e 's/firefox/${MOZILLA}/' \ - -e 's/Firefox/${MOZILLA_NAME}/' \ - ${WATERFOX_DESKTOP} - @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ - ${WRKSRC}/browser/app/nsBrowserApp.cpp - -pre-configure: - (cd ${WRKSRC} && ${LOCALBASE}/bin/autoconf-2.13) - (cd ${WRKSRC}/js/src/ && ${LOCALBASE}/bin/autoconf-2.13) - -post-install: - ${INSTALL_DATA} ${WATERFOX_DESKTOP} \ - ${STAGEDIR}${PREFIX}/share/applications/${MOZILLA}.desktop - ${MKDIR} ${STAGEDIR}${PREFIX}/share/pixmaps - ${LN} -sf ${WATERFOX_ICON_SRC} ${STAGEDIR}${PREFIX}/share/pixmaps/${WATERFOX_ICON} - -.include diff --git a/www/waterfox/distinfo b/www/waterfox/distinfo deleted file mode 100644 index fc8b4ed55cf6..000000000000 --- a/www/waterfox/distinfo +++ /dev/null @@ -1,3 +0,0 @@ -TIMESTAMP = 1536644593 -SHA256 (MrAlex94-Waterfox-56.2.3_GH0.tar.gz) = 6134501bf3325d3bcd9632405a46f1f1278988e57bf4ca88b61926eb49ef1465 -SIZE (MrAlex94-Waterfox-56.2.3_GH0.tar.gz) = 395126627 diff --git a/www/waterfox/files/patch-addon-search b/www/waterfox/files/patch-addon-search deleted file mode 100644 index a2fabaa456b7..000000000000 --- a/www/waterfox/files/patch-addon-search +++ /dev/null @@ -1,70 +0,0 @@ -https://github.com/mozilla/addons/issues/708 -https://github.com/mozilla/addons-frontend/issues/4610 - -diff --git browser/app/profile/firefox.js browser/app/profile/firefox.js -index 75c2c5e435e35..4d8c09c02759b 100644 ---- browser/app/profile/firefox.js -+++ browser/app/profile/firefox.js -@@ -48,12 +48,12 @@ pref("extensions.webextOptionalPermissionPrompts", true); - sticky_pref("extensions.getAddons.cache.enabled", true); - pref("extensions.getAddons.showPane", false); - pref("extensions.getAddons.maxResults", 15); --pref("extensions.getAddons.get.url", "https://services.addons.mozilla.org/%LOCALE%/firefox/api/%API_VERSION%/search/guid:%IDS%?src=firefox&appOS=%OS%&appVersion=%VERSION%"); -+pref("extensions.getAddons.get.url", "https://services.addons.mozilla.org/%LOCALE%/firefox/api/%API_VERSION%/search/guid:%IDS%?src=firefox&appOS=Linux&appVersion=%VERSION%"); - pref("extensions.getAddons.getWithPerformance.url", ""); --pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/firefox/search?q=%TERMS%&platform=%OS%&appver=%VERSION%"); --pref("extensions.getAddons.search.url", "https://services.addons.mozilla.org/%LOCALE%/firefox/api/%API_VERSION%/search/%TERMS%/all/%MAX_RESULTS%/%OS%/%VERSION%/%COMPATIBILITY_MODE%?src=firefox"); -+pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/firefox/search?q=%TERMS%&platform=Linux&appver=%VERSION%"); -+pref("extensions.getAddons.search.url", "https://services.addons.mozilla.org/%LOCALE%/firefox/api/%API_VERSION%/search/%TERMS%/all/%MAX_RESULTS%/Linux/%VERSION%/%COMPATIBILITY_MODE%?src=firefox"); - pref("extensions.webservice.discoverURL", ""); --pref("extensions.getAddons.recommended.url", "https://services.addons.mozilla.org/%LOCALE%/%APP%/api/%API_VERSION%/list/recommended/all/%MAX_RESULTS%/%OS%/%VERSION%?src=firefox"); -+pref("extensions.getAddons.recommended.url", "https://services.addons.mozilla.org/%LOCALE%/%APP%/api/%API_VERSION%/list/recommended/all/%MAX_RESULTS%/Linux/%VERSION%?src=firefox"); - pref("extensions.getAddons.link.url", "https://addons.mozilla.org/%LOCALE%/firefox/"); - pref("extensions.getAddons.themes.browseURL", "https://addons.mozilla.org/%LOCALE%/firefox/themes/?src=firefox"); - -@@ -204,8 +204,8 @@ pref("app.update.service.enabled", true); - // .. etc .. - // - pref("extensions.update.enabled", true); --pref("extensions.update.url", "https://versioncheck.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%¤tAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%"); --pref("extensions.update.background.url", "https://versioncheck-bg.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%¤tAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%"); -+pref("extensions.update.url", "https://versioncheck.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=Linux&appABI=%APP_ABI%&locale=%APP_LOCALE%¤tAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%"); -+pref("extensions.update.background.url", "https://versioncheck-bg.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=Linux&appABI=%APP_ABI%&locale=%APP_LOCALE%¤tAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%"); - pref("extensions.update.interval", 86400); // Check for updates to Extensions and - // Themes every day - // Non-symmetric (not shared by extensions) extension-specific [update] preferences -diff --git toolkit/mozapps/extensions/internal/AddonRepository.jsm toolkit/mozapps/extensions/internal/AddonRepository.jsm -index f70fd8d7e3bd8..81e8cd7764fdf 100644 ---- toolkit/mozapps/extensions/internal/AddonRepository.jsm -+++ toolkit/mozapps/extensions/internal/AddonRepository.jsm -@@ -1179,7 +1179,7 @@ this.AddonRepository = { - let nodes = node.getElementsByTagName("os"); - addon.isPlatformCompatible = Array.some(nodes, function(aNode) { - let text = aNode.textContent.toLowerCase().trim(); -- return text == "all" || text == Services.appinfo.OS.toLowerCase(); -+ return text == "all" || text == "linux" || text == Services.appinfo.OS.toLowerCase(); - }); - break; - case "install": -@@ -1187,7 +1187,7 @@ this.AddonRepository = { - if (node.hasAttribute("os")) { - let os = node.getAttribute("os").trim().toLowerCase(); - // If the os is not ALL and not the current OS then ignore this xpi -- if (os != "all" && os != Services.appinfo.OS.toLowerCase()) -+ if (os != "all" && os != "linux" && os != Services.appinfo.OS.toLowerCase()) - break; - } - -diff --git toolkit/mozapps/extensions/internal/XPIProvider.jsm toolkit/mozapps/extensions/internal/XPIProvider.jsm -index f70fd8d7e3bd8..81e8cd7764fdf 100644 ---- toolkit/mozapps/extensions/internal/XPIProvider.jsm -+++ toolkit/mozapps/extensions/internal/XPIProvider.jsm -@@ -7186,7 +7186,7 @@ AddonInternal.prototype = { - // Something is causing errors in here - try { - for (let platform of this.targetPlatforms) { -- if (platform.os == Services.appinfo.OS) { -+ if (platform.os == "Linux" || platform.os == Services.appinfo.OS) { - if (platform.abi) { - needsABI = true; - if (platform.abi === abi) diff --git a/www/waterfox/files/patch-browser-app-nsBrowserApp.cpp b/www/waterfox/files/patch-browser-app-nsBrowserApp.cpp deleted file mode 100644 index 68cb778b95a7..000000000000 --- a/www/waterfox/files/patch-browser-app-nsBrowserApp.cpp +++ /dev/null @@ -1,12 +0,0 @@ ---- browser/app/nsBrowserApp.cpp.orig 2016-09-19 16:19:28 UTC -+++ browser/app/nsBrowserApp.cpp -@@ -324,6 +324,9 @@ int main(int argc, char* argv[], char* e - { - mozilla::TimeStamp start = mozilla::TimeStamp::Now(); - -+ setenv("MOZ_GMP_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0); -+ setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0); -+ - #ifdef HAS_DLL_BLOCKLIST - DllBlocklist_Initialize(); - diff --git a/www/waterfox/files/patch-bug1021761 b/www/waterfox/files/patch-bug1021761 deleted file mode 100644 index f0764a8c4b22..000000000000 --- a/www/waterfox/files/patch-bug1021761 +++ /dev/null @@ -1,1218 +0,0 @@ -diff --git build/moz.configure/old.configure build/moz.configure/old.configure -index cd6c37cf4c7c..e98dc7973a6a 100644 ---- build/moz.configure/old.configure -+++ build/moz.configure/old.configure -@@ -275,6 +275,7 @@ def old_configure_options(*options): - '--with-nspr-prefix', - '--with-nss-exec-prefix', - '--with-nss-prefix', -+ '--with-oss', - '--with-pthreads', - '--with-qemu-exe', - '--with-sixgill', -diff --git old-configure.in old-configure.in -index dff46614635e..dbbfdb76ab78 100644 ---- old-configure.in -+++ old-configure.in -@@ -3128,6 +3128,67 @@ AC_DEFINE(MOZ_WEBM_ENCODER) - AC_SUBST(MOZ_WEBM_ENCODER) - - dnl ================================== -+dnl = Check OSS availability -+dnl ================================== -+ -+dnl If using Linux, Solaris or BSDs, ensure that OSS is available -+case "$OS_TARGET" in -+Linux|SunOS|DragonFly|FreeBSD|NetBSD|GNU/kFreeBSD) -+ MOZ_OSS=1 -+ ;; -+esac -+ -+MOZ_ARG_WITH_STRING(oss, -+[ --with-oss[=PFX] Enable OpenSoundSystem support [installed at prefix PFX]], -+ OSSPREFIX=$withval) -+ -+if test -n "$OSSPREFIX"; then -+ if test "$OSSPREFIX" != "no"; then -+ MOZ_OSS=1 -+ else -+ MOZ_OSS= -+ fi -+fi -+ -+_SAVE_CFLAGS=$CFLAGS -+_SAVE_LIBS=$LIBS -+if test -n "$MOZ_OSS"; then -+ dnl Prefer 4Front implementation -+ AC_MSG_CHECKING([MOZ_OSS_CFLAGS]) -+ if test "$OSSPREFIX" != "yes"; then -+ oss_conf=${OSSPREFIX%/usr}/etc/oss.conf -+ if test -f "$oss_conf"; then -+ . "$oss_conf" -+ else -+ OSSLIBDIR=$OSSPREFIX/lib/oss -+ fi -+ if test -d "$OSSLIBDIR"; then -+ MOZ_OSS_CFLAGS="$MOZ_OSS_CFLAGS -I$OSSLIBDIR/include" -+ fi -+ fi -+ AC_MSG_RESULT([$MOZ_OSS_CFLAGS]) -+ -+ CFLAGS="$CFLAGS $MOZ_OSS_CFLAGS" -+ MOZ_CHECK_HEADERS(sys/soundcard.h soundcard.h) -+ -+ if test "$ac_cv_header_sys_soundcard_h" != "yes" -a \ -+ "$ac_cv_header_soundcard_h" != "yes"; then -+ AC_MSG_ERROR([Need OSS for Ogg, Wave or WebM decoding on $OS_TARGET. Disable with --without-oss.]) -+ fi -+ -+ dnl Assume NetBSD implementation over SunAudio -+ AC_CHECK_LIB(ossaudio, _oss_ioctl, -+ [AC_DEFINE_UNQUOTED(CUBEB_OSS_DEFAULT_OUTPUT, "/dev/sound") -+ MOZ_OSS_LIBS="$MOZ_OSS_LIBS -lossaudio"]) -+fi -+CFLAGS=$_SAVE_CFLAGS -+LIBS=$_SAVE_LIBS -+ -+AC_SUBST(MOZ_OSS) -+AC_SUBST_LIST(MOZ_OSS_CFLAGS) -+AC_SUBST_LIST(MOZ_OSS_LIBS) -+ -+dnl ================================== - dnl = Check alsa availability on Linux - dnl ================================== - -diff --git dom/media/CubebUtils.cpp dom/media/CubebUtils.cpp -index e10e07e06ade..1fd561bea113 100644 ---- dom/media/CubebUtils.cpp -+++ dom/media/CubebUtils.cpp -@@ -71,7 +71,8 @@ const char* AUDIOSTREAM_BACKEND_ID_STR[] = { - "sndio", - "opensl", - "audiotrack", -- "kai" -+ "kai", -+ "oss", - }; - /* Index for failures to create an audio stream the first time. */ - const int CUBEB_BACKEND_INIT_FAILURE_FIRST = -diff --git media/libcubeb/AUTHORS media/libcubeb/AUTHORS -index 0fde65baad34..f8663c43b475 100644 ---- media/libcubeb/AUTHORS -+++ media/libcubeb/AUTHORS -@@ -4,6 +4,7 @@ Michael Wu - Paul Adenot - David Richards - Sebastien Alaiwan -+Evgeniy Vodolazskiy - KO Myung-Hun - Haakon Sporsheim - Alex Chronopoulos -diff --git media/libcubeb/src/cubeb.c media/libcubeb/src/cubeb.c -index 57bcb4c13652..68be024f4a68 100644 ---- media/libcubeb/src/cubeb.c -+++ media/libcubeb/src/cubeb.c -@@ -54,6 +54,9 @@ int audiotrack_init(cubeb ** context, char const * context_name); - #if defined(USE_KAI) - int kai_init(cubeb ** context, char const * context_name); - #endif -+#if defined(USE_OSS) -+int oss_init(cubeb ** context, char const * context_name); -+#endif - - static int - validate_stream_params(cubeb_stream_params * input_stream_params, -@@ -155,6 +158,10 @@ cubeb_init(cubeb ** context, char const * context_name, char const * backend_nam - #if defined(USE_KAI) - init_oneshot = kai_init; - #endif -+ } else if (!strcmp(backend_name, "oss")) { -+#if defined(USE_OSS) -+ init_oneshot = oss_init; -+#endif - } else { - /* Already set */ - } -@@ -196,6 +203,9 @@ cubeb_init(cubeb ** context, char const * context_name, char const * backend_nam - #if defined(USE_KAI) - kai_init, - #endif -+#if defined(USE_OSS) -+ oss_init, -+#endif - }; - int i; - -diff --git media/libcubeb/src/cubeb_alsa.c media/libcubeb/src/cubeb_alsa.c -index 05ad27fef53b..3ea78e994f59 100644 ---- media/libcubeb/src/cubeb_alsa.c -+++ media/libcubeb/src/cubeb_alsa.c -@@ -12,6 +12,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -25,6 +26,52 @@ - - #define ALSA_PA_PLUGIN "ALSA <-> PulseAudio PCM I/O Plugin" - -+#ifdef DISABLE_LIBASOUND_DLOPEN -+#define WRAP(x) x -+#else -+#define WRAP(x) cubeb_##x -+#define MAKE_TYPEDEF(x) static typeof(x) * cubeb_##x -+MAKE_TYPEDEF(snd_config); -+MAKE_TYPEDEF(snd_config_add); -+MAKE_TYPEDEF(snd_config_copy); -+MAKE_TYPEDEF(snd_config_delete); -+MAKE_TYPEDEF(snd_config_get_id); -+MAKE_TYPEDEF(snd_config_get_string); -+MAKE_TYPEDEF(snd_config_imake_integer); -+MAKE_TYPEDEF(snd_config_search); -+MAKE_TYPEDEF(snd_config_search_definition); -+MAKE_TYPEDEF(snd_lib_error_set_handler); -+MAKE_TYPEDEF(snd_pcm_avail_update); -+MAKE_TYPEDEF(snd_pcm_close); -+MAKE_TYPEDEF(snd_pcm_delay); -+MAKE_TYPEDEF(snd_pcm_drain); -+MAKE_TYPEDEF(snd_pcm_frames_to_bytes); -+MAKE_TYPEDEF(snd_pcm_get_params); -+/* snd_pcm_hw_params_alloca is actually a macro */ -+/* MAKE_TYPEDEF(snd_pcm_hw_params_alloca); */ -+MAKE_TYPEDEF(snd_pcm_hw_params_sizeof); -+#define snd_pcm_hw_params_sizeof cubeb_snd_pcm_hw_params_sizeof -+MAKE_TYPEDEF(snd_pcm_hw_params_any); -+MAKE_TYPEDEF(snd_pcm_hw_params_get_channels_max); -+MAKE_TYPEDEF(snd_pcm_hw_params_get_rate); -+MAKE_TYPEDEF(snd_pcm_hw_params_set_rate_near); -+MAKE_TYPEDEF(snd_pcm_nonblock); -+MAKE_TYPEDEF(snd_pcm_open); -+MAKE_TYPEDEF(snd_pcm_open_lconf); -+MAKE_TYPEDEF(snd_pcm_pause); -+MAKE_TYPEDEF(snd_pcm_poll_descriptors); -+MAKE_TYPEDEF(snd_pcm_poll_descriptors_count); -+MAKE_TYPEDEF(snd_pcm_poll_descriptors_revents); -+MAKE_TYPEDEF(snd_pcm_readi); -+MAKE_TYPEDEF(snd_pcm_recover); -+MAKE_TYPEDEF(snd_pcm_set_params); -+MAKE_TYPEDEF(snd_pcm_start); -+MAKE_TYPEDEF(snd_pcm_state); -+MAKE_TYPEDEF(snd_pcm_writei); -+ -+#undef MAKE_TYPEDEF -+#endif -+ - /* ALSA is not thread-safe. snd_pcm_t instances are individually protected - by the owning cubeb_stream's mutex. snd_pcm_t creation and destruction - is not thread-safe until ALSA 1.0.24 (see alsa-lib.git commit 91c9c8f1), -@@ -65,6 +112,8 @@ struct cubeb { - workaround is not required. */ - snd_config_t * local_config; - int is_pa; -+ -+ void * libasound; - }; - - enum stream_state { -@@ -243,8 +292,8 @@ set_timeout(struct timeval * timeout, unsigned int ms) - static void - stream_buffer_decrement(cubeb_stream * stm, long count) - { -- char * bufremains = stm->buffer + snd_pcm_frames_to_bytes(stm->pcm, count); -- memmove(stm->buffer, bufremains, snd_pcm_frames_to_bytes(stm->pcm, stm->bufframes - count)); -+ char * bufremains = stm->buffer + WRAP(snd_pcm_frames_to_bytes)(stm->pcm, count); -+ memmove(stm->buffer, bufremains, WRAP(snd_pcm_frames_to_bytes)(stm->pcm, stm->bufframes - count)); - stm->bufframes -= count; - } - -@@ -276,9 +325,9 @@ alsa_process_stream(cubeb_stream * stm) - /* Call _poll_descriptors_revents() even if we don't use it - to let underlying plugins clear null events. Otherwise poll() - may wake up again and again, producing unnecessary CPU usage. */ -- snd_pcm_poll_descriptors_revents(stm->pcm, stm->fds, stm->nfds, &revents); -+ WRAP(snd_pcm_poll_descriptors_revents)(stm->pcm, stm->fds, stm->nfds, &revents); - -- avail = snd_pcm_avail_update(stm->pcm); -+ avail = WRAP(snd_pcm_avail_update)(stm->pcm); - - /* Got null event? Bail and wait for another wakeup. */ - if (avail == 0) { -@@ -301,7 +350,7 @@ alsa_process_stream(cubeb_stream * stm) - // TODO: should it be marked as DRAINING? - } - -- got = snd_pcm_readi(stm->pcm, stm->buffer+stm->bufframes, avail); -+ got = WRAP(snd_pcm_readi)(stm->pcm, stm->buffer+stm->bufframes, avail); - - if (got < 0) { - avail = got; // the error handler below will recover us -@@ -345,7 +394,7 @@ alsa_process_stream(cubeb_stream * stm) - (!stm->other_stream || stm->other_stream->bufframes > 0)) { - long got = avail - stm->bufframes; - void * other_buffer = stm->other_stream ? stm->other_stream->buffer : NULL; -- char * buftail = stm->buffer + snd_pcm_frames_to_bytes(stm->pcm, stm->bufframes); -+ char * buftail = stm->buffer + WRAP(snd_pcm_frames_to_bytes)(stm->pcm, stm->bufframes); - - /* Correct read size to the other stream available frames */ - if (stm->other_stream && got > (snd_pcm_sframes_t) stm->other_stream->bufframes) { -@@ -372,8 +421,8 @@ alsa_process_stream(cubeb_stream * stm) - long drain_frames = avail - stm->bufframes; - double drain_time = (double) drain_frames / stm->params.rate; - -- char * buftail = stm->buffer + snd_pcm_frames_to_bytes(stm->pcm, stm->bufframes); -- memset(buftail, 0, snd_pcm_frames_to_bytes(stm->pcm, drain_frames)); -+ char * buftail = stm->buffer + WRAP(snd_pcm_frames_to_bytes)(stm->pcm, stm->bufframes); -+ memset(buftail, 0, WRAP(snd_pcm_frames_to_bytes)(stm->pcm, drain_frames)); - stm->bufframes = avail; - - /* Mark as draining, unless we're waiting for capture */ -@@ -400,7 +449,7 @@ alsa_process_stream(cubeb_stream * stm) - } - } - -- wrote = snd_pcm_writei(stm->pcm, stm->buffer, avail); -+ wrote = WRAP(snd_pcm_writei)(stm->pcm, stm->buffer, avail); - if (wrote < 0) { - avail = wrote; // the error handler below will recover us - } else { -@@ -413,13 +462,13 @@ alsa_process_stream(cubeb_stream * stm) - - /* Got some error? Let's try to recover the stream. */ - if (avail < 0) { -- avail = snd_pcm_recover(stm->pcm, avail, 0); -+ avail = WRAP(snd_pcm_recover)(stm->pcm, avail, 0); - - /* Capture pcm must be started after initial setup/recover */ - if (avail >= 0 && - stm->stream_type == SND_PCM_STREAM_CAPTURE && -- snd_pcm_state(stm->pcm) == SND_PCM_STATE_PREPARED) { -- avail = snd_pcm_start(stm->pcm); -+ WRAP(snd_pcm_state)(stm->pcm) == SND_PCM_STATE_PREPARED) { -+ avail = WRAP(snd_pcm_start)(stm->pcm); - } - } - -@@ -535,26 +584,26 @@ get_slave_pcm_node(snd_config_t * lconf, snd_config_t * root_pcm) - - slave_def = NULL; - -- r = snd_config_search(root_pcm, "slave", &slave_pcm); -+ r = WRAP(snd_config_search)(root_pcm, "slave", &slave_pcm); - if (r < 0) { - return NULL; - } - -- r = snd_config_get_string(slave_pcm, &string); -+ r = WRAP(snd_config_get_string)(slave_pcm, &string); - if (r >= 0) { -- r = snd_config_search_definition(lconf, "pcm_slave", string, &slave_def); -+ r = WRAP(snd_config_search_definition)(lconf, "pcm_slave", string, &slave_def); - if (r < 0) { - return NULL; - } - } - - do { -- r = snd_config_search(slave_def ? slave_def : slave_pcm, "pcm", &pcm); -+ r = WRAP(snd_config_search)(slave_def ? slave_def : slave_pcm, "pcm", &pcm); - if (r < 0) { - break; - } - -- r = snd_config_get_string(slave_def ? slave_def : slave_pcm, &string); -+ r = WRAP(snd_config_get_string)(slave_def ? slave_def : slave_pcm, &string); - if (r < 0) { - break; - } -@@ -563,7 +612,7 @@ get_slave_pcm_node(snd_config_t * lconf, snd_config_t * root_pcm) - if (r < 0 || r > (int) sizeof(node_name)) { - break; - } -- r = snd_config_search(lconf, node_name, &pcm); -+ r = WRAP(snd_config_search)(lconf, node_name, &pcm); - if (r < 0) { - break; - } -@@ -572,7 +621,7 @@ get_slave_pcm_node(snd_config_t * lconf, snd_config_t * root_pcm) - } while (0); - - if (slave_def) { -- snd_config_delete(slave_def); -+ WRAP(snd_config_delete)(slave_def); - } - - return NULL; -@@ -595,22 +644,22 @@ init_local_config_with_workaround(char const * pcm_name) - - lconf = NULL; - -- if (snd_config == NULL) { -+ if (*WRAP(snd_config) == NULL) { - return NULL; - } - -- r = snd_config_copy(&lconf, snd_config); -+ r = WRAP(snd_config_copy)(&lconf, *WRAP(snd_config)); - if (r < 0) { - return NULL; - } - - do { -- r = snd_config_search_definition(lconf, "pcm", pcm_name, &pcm_node); -+ r = WRAP(snd_config_search_definition)(lconf, "pcm", pcm_name, &pcm_node); - if (r < 0) { - break; - } - -- r = snd_config_get_id(pcm_node, &string); -+ r = WRAP(snd_config_get_id)(pcm_node, &string); - if (r < 0) { - break; - } -@@ -619,7 +668,7 @@ init_local_config_with_workaround(char const * pcm_name) - if (r < 0 || r > (int) sizeof(node_name)) { - break; - } -- r = snd_config_search(lconf, node_name, &pcm_node); -+ r = WRAP(snd_config_search)(lconf, node_name, &pcm_node); - if (r < 0) { - break; - } -@@ -630,12 +679,12 @@ init_local_config_with_workaround(char const * pcm_name) - } - - /* Fetch the PCM node's type, and bail out if it's not the PulseAudio plugin. */ -- r = snd_config_search(pcm_node, "type", &node); -+ r = WRAP(snd_config_search)(pcm_node, "type", &node); - if (r < 0) { - break; - } - -- r = snd_config_get_string(node, &string); -+ r = WRAP(snd_config_get_string)(node, &string); - if (r < 0) { - break; - } -@@ -646,18 +695,18 @@ init_local_config_with_workaround(char const * pcm_name) - - /* Don't clobber an explicit existing handle_underrun value, set it only - if it doesn't already exist. */ -- r = snd_config_search(pcm_node, "handle_underrun", &node); -+ r = WRAP(snd_config_search)(pcm_node, "handle_underrun", &node); - if (r != -ENOENT) { - break; - } - - /* Disable pcm_pulse's asynchronous underrun handling. */ -- r = snd_config_imake_integer(&node, "handle_underrun", 0); -+ r = WRAP(snd_config_imake_integer)(&node, "handle_underrun", 0); - if (r < 0) { - break; - } - -- r = snd_config_add(pcm_node, node); -+ r = WRAP(snd_config_add)(pcm_node, node); - if (r < 0) { - break; - } -@@ -665,7 +714,7 @@ init_local_config_with_workaround(char const * pcm_name) - return lconf; - } while (0); - -- snd_config_delete(lconf); -+ WRAP(snd_config_delete)(lconf); - - return NULL; - } -@@ -677,9 +726,9 @@ alsa_locked_pcm_open(snd_pcm_t ** pcm, char const * pcm_name, snd_pcm_stream_t s - - pthread_mutex_lock(&cubeb_alsa_mutex); - if (local_config) { -- r = snd_pcm_open_lconf(pcm, pcm_name, stream, SND_PCM_NONBLOCK, local_config); -+ r = WRAP(snd_pcm_open_lconf)(pcm, pcm_name, stream, SND_PCM_NONBLOCK, local_config); - } else { -- r = snd_pcm_open(pcm, pcm_name, stream, SND_PCM_NONBLOCK); -+ r = WRAP(snd_pcm_open)(pcm, pcm_name, stream, SND_PCM_NONBLOCK); - } - pthread_mutex_unlock(&cubeb_alsa_mutex); - -@@ -692,7 +741,7 @@ alsa_locked_pcm_close(snd_pcm_t * pcm) - int r; - - pthread_mutex_lock(&cubeb_alsa_mutex); -- r = snd_pcm_close(pcm); -+ r = WRAP(snd_pcm_close)(pcm); - pthread_mutex_unlock(&cubeb_alsa_mutex); - - return r; -@@ -755,12 +804,65 @@ alsa_init(cubeb ** context, char const * context_name) - pthread_attr_t attr; - snd_pcm_t * dummy; - -+ void * libasound = NULL; -+ -+#ifndef DISABLE_LIBASOUND_DLOPEN -+ libasound = dlopen("libasound.so", RTLD_LAZY); -+ if (!libasound) { -+ return CUBEB_ERROR; -+ } -+ -+#define LOAD(x) do { \ -+ cubeb_##x = dlsym(libasound, #x); \ -+ if (!cubeb_##x) { \ -+ dlclose(libasound); \ -+ return CUBEB_ERROR; \ -+ } \ -+ } while(0) -+ -+ LOAD(snd_config); -+ LOAD(snd_config_add); -+ LOAD(snd_config_copy); -+ LOAD(snd_config_delete); -+ LOAD(snd_config_get_id); -+ LOAD(snd_config_get_string); -+ LOAD(snd_config_imake_integer); -+ LOAD(snd_config_search); -+ LOAD(snd_config_search_definition); -+ LOAD(snd_lib_error_set_handler); -+ LOAD(snd_pcm_avail_update); -+ LOAD(snd_pcm_close); -+ LOAD(snd_pcm_delay); -+ LOAD(snd_pcm_drain); -+ LOAD(snd_pcm_frames_to_bytes); -+ LOAD(snd_pcm_get_params); -+ /* snd_pcm_hw_params_alloca is actually a macro */ -+ /* LOAD(snd_pcm_hw_params_alloca); */ -+ LOAD(snd_pcm_hw_params_sizeof); -+ LOAD(snd_pcm_hw_params_any); -+ LOAD(snd_pcm_hw_params_get_channels_max); -+ LOAD(snd_pcm_hw_params_get_rate); -+ LOAD(snd_pcm_hw_params_set_rate_near); -+ LOAD(snd_pcm_nonblock); -+ LOAD(snd_pcm_open); -+ LOAD(snd_pcm_open_lconf); -+ LOAD(snd_pcm_pause); -+ LOAD(snd_pcm_poll_descriptors); -+ LOAD(snd_pcm_poll_descriptors_count); -+ LOAD(snd_pcm_poll_descriptors_revents); -+ LOAD(snd_pcm_recover); -+ LOAD(snd_pcm_set_params); -+ LOAD(snd_pcm_state); -+ LOAD(snd_pcm_writei); -+ -+#undef LOAD -+#endif - assert(context); - *context = NULL; - - pthread_mutex_lock(&cubeb_alsa_mutex); - if (!cubeb_alsa_error_handler_set) { -- snd_lib_error_set_handler(silent_error_handler); -+ WRAP(snd_lib_error_set_handler)(silent_error_handler); - cubeb_alsa_error_handler_set = 1; - } - pthread_mutex_unlock(&cubeb_alsa_mutex); -@@ -768,6 +870,8 @@ alsa_init(cubeb ** context, char const * context_name) - ctx = calloc(1, sizeof(*ctx)); - assert(ctx); - -+ ctx->libasound = libasound; -+ - ctx->ops = &alsa_ops; - - r = pthread_mutex_init(&ctx->mutex, NULL); -@@ -817,7 +921,7 @@ alsa_init(cubeb ** context, char const * context_name) - config fails with EINVAL, the PA PCM is too old for this workaround. */ - if (r == -EINVAL) { - pthread_mutex_lock(&cubeb_alsa_mutex); -- snd_config_delete(ctx->local_config); -+ WRAP(snd_config_delete)(ctx->local_config); - pthread_mutex_unlock(&cubeb_alsa_mutex); - ctx->local_config = NULL; - } else if (r >= 0) { -@@ -857,9 +961,13 @@ alsa_destroy(cubeb * ctx) - pthread_mutex_destroy(&ctx->mutex); - free(ctx->fds); - -+ if (ctx->libasound) { -+ dlclose(ctx->libasound); -+ } -+ - if (ctx->local_config) { - pthread_mutex_lock(&cubeb_alsa_mutex); -- snd_config_delete(ctx->local_config); -+ WRAP(snd_config_delete)(ctx->local_config); - pthread_mutex_unlock(&cubeb_alsa_mutex); - } - -@@ -939,7 +1047,7 @@ alsa_stream_init_single(cubeb * ctx, cubeb_stream ** stream, char const * stream - return CUBEB_ERROR; - } - -- r = snd_pcm_nonblock(stm->pcm, 1); -+ r = WRAP(snd_pcm_nonblock)(stm->pcm, 1); - assert(r == 0); - - latency_us = latency_frames * 1e6 / stm->params.rate; -@@ -952,7 +1060,7 @@ alsa_stream_init_single(cubeb * ctx, cubeb_stream ** stream, char const * stream - latency_us = latency_us < min_latency ? min_latency: latency_us; - } - -- r = snd_pcm_set_params(stm->pcm, format, SND_PCM_ACCESS_RW_INTERLEAVED, -+ r = WRAP(snd_pcm_set_params)(stm->pcm, format, SND_PCM_ACCESS_RW_INTERLEAVED, - stm->params.channels, stm->params.rate, 1, - latency_us); - if (r < 0) { -@@ -960,20 +1068,20 @@ alsa_stream_init_single(cubeb * ctx, cubeb_stream ** stream, char const * stream - return CUBEB_ERROR_INVALID_FORMAT; - } - -- r = snd_pcm_get_params(stm->pcm, &stm->buffer_size, &period_size); -+ r = WRAP(snd_pcm_get_params)(stm->pcm, &stm->buffer_size, &period_size); - assert(r == 0); - - /* Double internal buffer size to have enough space when waiting for the other side of duplex connection */ - stm->buffer_size *= 2; -- stm->buffer = calloc(1, snd_pcm_frames_to_bytes(stm->pcm, stm->buffer_size)); -+ stm->buffer = calloc(1, WRAP(snd_pcm_frames_to_bytes)(stm->pcm, stm->buffer_size)); - assert(stm->buffer); - -- stm->nfds = snd_pcm_poll_descriptors_count(stm->pcm); -+ stm->nfds = WRAP(snd_pcm_poll_descriptors_count)(stm->pcm); - assert(stm->nfds > 0); - - stm->saved_fds = calloc(stm->nfds, sizeof(struct pollfd)); - assert(stm->saved_fds); -- r = snd_pcm_poll_descriptors(stm->pcm, stm->saved_fds, stm->nfds); -+ r = WRAP(snd_pcm_poll_descriptors)(stm->pcm, stm->saved_fds, stm->nfds); - assert((nfds_t) r == stm->nfds); - - if (alsa_register_stream(ctx, stm) != 0) { -@@ -1048,7 +1156,7 @@ alsa_stream_destroy(cubeb_stream * stm) - pthread_mutex_lock(&stm->mutex); - if (stm->pcm) { - if (stm->state == DRAINING) { -- snd_pcm_drain(stm->pcm); -+ WRAP(snd_pcm_drain)(stm->pcm); - } - alsa_locked_pcm_close(stm->pcm); - stm->pcm = NULL; -@@ -1094,12 +1202,12 @@ alsa_get_max_channel_count(cubeb * ctx, uint32_t * max_channels) - - assert(stm); - -- r = snd_pcm_hw_params_any(stm->pcm, hw_params); -+ r = WRAP(snd_pcm_hw_params_any)(stm->pcm, hw_params); - if (r < 0) { - return CUBEB_ERROR; - } - -- r = snd_pcm_hw_params_get_channels_max(hw_params, max_channels); -+ r = WRAP(snd_pcm_hw_params_get_channels_max)(hw_params, max_channels); - if (r < 0) { - return CUBEB_ERROR; - } -@@ -1120,34 +1228,34 @@ alsa_get_preferred_sample_rate(cubeb * ctx, uint32_t * rate) { - - /* get a pcm, disabling resampling, so we get a rate the - * hardware/dmix/pulse/etc. supports. */ -- r = snd_pcm_open(&pcm, CUBEB_ALSA_PCM_NAME, SND_PCM_STREAM_PLAYBACK, SND_PCM_NO_AUTO_RESAMPLE); -+ r = WRAP(snd_pcm_open)(&pcm, CUBEB_ALSA_PCM_NAME, SND_PCM_STREAM_PLAYBACK, SND_PCM_NO_AUTO_RESAMPLE); - if (r < 0) { - return CUBEB_ERROR; - } - -- r = snd_pcm_hw_params_any(pcm, hw_params); -+ r = WRAP(snd_pcm_hw_params_any)(pcm, hw_params); - if (r < 0) { -- snd_pcm_close(pcm); -+ WRAP(snd_pcm_close)(pcm); - return CUBEB_ERROR; - } - -- r = snd_pcm_hw_params_get_rate(hw_params, rate, &dir); -+ r = WRAP(snd_pcm_hw_params_get_rate)(hw_params, rate, &dir); - if (r >= 0) { - /* There is a default rate: use it. */ -- snd_pcm_close(pcm); -+ WRAP(snd_pcm_close)(pcm); - return CUBEB_OK; - } - - /* Use a common rate, alsa may adjust it based on hw/etc. capabilities. */ - *rate = 44100; - -- r = snd_pcm_hw_params_set_rate_near(pcm, hw_params, rate, NULL); -+ r = WRAP(snd_pcm_hw_params_set_rate_near)(pcm, hw_params, rate, NULL); - if (r < 0) { -- snd_pcm_close(pcm); -+ WRAP(snd_pcm_close)(pcm); - return CUBEB_ERROR; - } - -- snd_pcm_close(pcm); -+ WRAP(snd_pcm_close)(pcm); - - return CUBEB_OK; - } -@@ -1180,10 +1288,10 @@ alsa_stream_start(cubeb_stream * stm) - pthread_mutex_lock(&stm->mutex); - /* Capture pcm must be started after initial setup/recover */ - if (stm->stream_type == SND_PCM_STREAM_CAPTURE && -- snd_pcm_state(stm->pcm) == SND_PCM_STATE_PREPARED) { -- snd_pcm_start(stm->pcm); -+ WRAP(snd_pcm_state)(stm->pcm) == SND_PCM_STATE_PREPARED) { -+ WRAP(snd_pcm_start)(stm->pcm); - } -- snd_pcm_pause(stm->pcm, 0); -+ WRAP(snd_pcm_pause)(stm->pcm, 0); - gettimeofday(&stm->last_activity, NULL); - pthread_mutex_unlock(&stm->mutex); - -@@ -1223,7 +1331,7 @@ alsa_stream_stop(cubeb_stream * stm) - pthread_mutex_unlock(&ctx->mutex); - - pthread_mutex_lock(&stm->mutex); -- snd_pcm_pause(stm->pcm, 1); -+ WRAP(snd_pcm_pause)(stm->pcm, 1); - pthread_mutex_unlock(&stm->mutex); - - return CUBEB_OK; -@@ -1239,8 +1347,8 @@ alsa_stream_get_position(cubeb_stream * stm, uint64_t * position) - pthread_mutex_lock(&stm->mutex); - - delay = -1; -- if (snd_pcm_state(stm->pcm) != SND_PCM_STATE_RUNNING || -- snd_pcm_delay(stm->pcm, &delay) != 0) { -+ if (WRAP(snd_pcm_state)(stm->pcm) != SND_PCM_STATE_RUNNING || -+ WRAP(snd_pcm_delay)(stm->pcm, &delay) != 0) { - *position = stm->last_position; - pthread_mutex_unlock(&stm->mutex); - return CUBEB_OK; -@@ -1265,7 +1373,7 @@ alsa_stream_get_latency(cubeb_stream * stm, uint32_t * latency) - snd_pcm_sframes_t delay; - /* This function returns the delay in frames until a frame written using - snd_pcm_writei is sent to the DAC. The DAC delay should be < 1ms anyways. */ -- if (snd_pcm_delay(stm->pcm, &delay)) { -+ if (WRAP(snd_pcm_delay)(stm->pcm, &delay)) { - return CUBEB_ERROR; - } - -diff --git media/libcubeb/src/cubeb_oss.c media/libcubeb/src/cubeb_oss.c -new file mode 100644 -index 000000000000..7b0b4f37dbe4 ---- /dev/null -+++ media/libcubeb/src/cubeb_oss.c -@@ -0,0 +1,445 @@ -+/* -+ * Copyright © 2014 Mozilla Foundation -+ * -+ * This program is made available under an ISC-style license. See the -+ * accompanying file LICENSE for details. -+ */ -+#if defined(HAVE_SYS_SOUNDCARD_H) -+#include -+#else -+#include -+#endif -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "cubeb/cubeb.h" -+#include "cubeb-internal.h" -+ -+#ifndef CUBEB_OSS_DEFAULT_OUTPUT -+#define CUBEB_OSS_DEFAULT_OUTPUT "/dev/dsp" -+#endif -+ -+#define OSS_BUFFER_SIZE 1024 -+ -+struct cubeb { -+ struct cubeb_ops const * ops; -+}; -+ -+struct cubeb_stream { -+ cubeb * context; -+ -+ cubeb_data_callback data_callback; -+ cubeb_state_callback state_callback; -+ void * user_ptr; -+ float volume; -+ float panning; -+ -+ pthread_mutex_t state_mutex; -+ pthread_cond_t state_cond; -+ -+ int running; -+ int stopped; -+ int floating; -+ -+ /* These two vars are needed to support old versions of OSS */ -+ unsigned int position_bytes; -+ unsigned int last_position_bytes; -+ -+ uint64_t written_frags; /* The number of fragments written to /dev/dsp */ -+ uint64_t missed_frags; /* fragments output with stopped stream */ -+ -+ cubeb_stream_params params; -+ int fd; -+ pthread_t th; -+}; -+ -+static struct cubeb_ops const oss_ops; -+ -+int oss_init(cubeb ** context, char const * context_name) -+{ -+ cubeb* ctx = (cubeb*)malloc(sizeof(cubeb)); -+ ctx->ops = &oss_ops; -+ *context = ctx; -+ return CUBEB_OK; -+} -+ -+static void oss_destroy(cubeb *ctx) -+{ -+ free(ctx); -+} -+ -+static char const * oss_get_backend_id(cubeb * context) -+{ -+ static char oss_name[] = "oss"; -+ return oss_name; -+} -+ -+static int oss_get_max_channel_count(cubeb * ctx, uint32_t * max_channels) -+{ -+ *max_channels = 2; /* Let's support only stereo for now */ -+ return CUBEB_OK; -+} -+ -+static int oss_get_min_latency(cubeb * context, cubeb_stream_params params, -+ uint32_t * latency_frames) -+{ -+ (void)context; -+ /* 40ms is a big enough number to work ok */ -+ *latency_frames = 40 * params.rate / 1000; -+ return CUBEB_OK; -+} -+ -+static int oss_get_preferred_sample_rate(cubeb *context, uint32_t * rate) -+{ -+ /* 48000 seems a prefered choice for most audio devices -+ * and a good choice for OSS */ -+ *rate = 48000; -+ return CUBEB_OK; -+} -+ -+static void run_state_callback(cubeb_stream *stream, cubeb_state state) -+{ -+ if (stream->state_callback) { -+ stream->state_callback(stream, stream->user_ptr, state); -+ } -+} -+ -+static long run_data_callback(cubeb_stream *stream, void *buffer, long nframes) -+{ -+ long got = 0; -+ pthread_mutex_lock(&stream->state_mutex); -+ if (stream->data_callback && stream->running && !stream->stopped) { -+ pthread_mutex_unlock(&stream->state_mutex); -+ got = stream->data_callback(stream, stream->user_ptr, NULL, buffer, nframes); -+ } else { -+ pthread_mutex_unlock(&stream->state_mutex); -+ } -+ return got; -+} -+ -+static void apply_volume_int(int16_t* buffer, unsigned int n, -+ float volume, float panning) -+{ -+ float left = volume; -+ float right = volume; -+ unsigned int i; -+ int pan[2]; -+ if (panning<0) { -+ right *= (1+panning); -+ } else { -+ left *= (1-panning); -+ } -+ pan[0] = 128.0*left; -+ pan[1] = 128.0*right; -+ for(i=0; irunning) { -+ pthread_mutex_lock(&stream->state_mutex); -+ if (stream->stopped) { -+ pthread_mutex_unlock(&stream->state_mutex); -+ run_state_callback(stream, CUBEB_STATE_STOPPED); -+ pthread_mutex_lock(&stream->state_mutex); -+ while (stream->stopped) { -+ pthread_cond_wait(&stream->state_cond, &stream->state_mutex); -+ } -+ pthread_mutex_unlock(&stream->state_mutex); -+ run_state_callback(stream, CUBEB_STATE_STARTED); -+ continue; -+ } -+ pthread_mutex_unlock(&stream->state_mutex); -+ if (stream->floating) { -+ got = run_data_callback(stream, f_buffer, -+ OSS_BUFFER_SIZE/stream->params.channels); -+ apply_volume_float(f_buffer, got*stream->params.channels, -+ stream->volume, stream->panning); -+ for (i=0; i<((unsigned long)got)*stream->params.channels; i++) { -+ /* Clipping is prefered to overflow */ -+ if(f_buffer[i]>=1.0){ -+ f_buffer[i]=1.0; -+ } -+ if(f_buffer[i]<=-1.0){ -+ f_buffer[i]=-1.0; -+ } -+ /* One might think that multipling by 32767.0 is logical but results in clipping */ -+ buffer[i] = f_buffer[i]*32767.0; -+ } -+ } else { -+ got = run_data_callback(stream, buffer, -+ OSS_BUFFER_SIZE/stream->params.channels); -+ apply_volume_int(buffer, got*stream->params.channels, -+ stream->volume, stream->panning); -+ } -+ if (got<0) { -+ run_state_callback(stream, CUBEB_STATE_ERROR); -+ break; -+ } -+ if (!got) { -+ run_state_callback(stream, CUBEB_STATE_DRAINED); -+ } -+ if (got) { -+ size_t i = 0; -+ size_t s = got*stream->params.channels*sizeof(int16_t); -+ while (i < s) { -+ ssize_t n = write(stream->fd, ((char*)buffer) + i, s - i); -+ if (n<=0) { -+ run_state_callback(stream, CUBEB_STATE_ERROR); -+ break; -+ } -+ i+=n; -+ } -+ stream->written_frags+=got; -+ } -+ } -+ return NULL; -+} -+ -+static void oss_try_set_latency(cubeb_stream* stream, unsigned int latency) -+{ -+ unsigned int latency_bytes, n_frag; -+ int frag; -+ /* fragment size of 1024 is a good choice with good chances to be accepted */ -+ unsigned int frag_log=10; /* 2^frag_log = fragment size */ -+ latency_bytes = -+ latency*stream->params.rate*stream->params.channels*sizeof(uint16_t)/1000; -+ n_frag = latency_bytes>>frag_log; -+ frag = (n_frag<<16) | frag_log; -+ /* Even if this fails we wish to continue, not checking for errors */ -+ ioctl(stream->fd, SNDCTL_DSP_SETFRAGMENT, &frag); -+} -+ -+static int oss_stream_init(cubeb * context, cubeb_stream ** stm, -+ char const * stream_name, -+ cubeb_devid input_device, -+ cubeb_stream_params * input_stream_params, -+ cubeb_devid output_device, -+ cubeb_stream_params * output_stream_params, -+ unsigned int latency, -+ cubeb_data_callback data_callback, -+ cubeb_state_callback state_callback, void * user_ptr) -+{ -+ cubeb_stream* stream = (cubeb_stream*)malloc(sizeof(cubeb_stream)); -+ stream->context = context; -+ stream->data_callback = data_callback; -+ stream->state_callback = state_callback; -+ stream->user_ptr = user_ptr; -+ -+ assert(!input_stream_params && "not supported."); -+ if (input_device || output_device) { -+ /* Device selection not yet implemented. */ -+ return CUBEB_ERROR_DEVICE_UNAVAILABLE; -+ } -+ -+ if ((stream->fd = open(CUBEB_OSS_DEFAULT_OUTPUT, O_WRONLY)) == -1) { -+ free(stream); -+ return CUBEB_ERROR; -+ } -+#define SET(what, to) do { unsigned int i = to; \ -+ int j = ioctl(stream->fd, what, &i); \ -+ if (j == -1 || i != to) { \ -+ close(stream->fd); \ -+ free(stream); \ -+ return CUBEB_ERROR_INVALID_FORMAT; } } while (0) -+ -+ stream->params = *output_stream_params; -+ stream->volume = 1.0; -+ stream->panning = 0.0; -+ -+ oss_try_set_latency(stream, latency); -+ -+ stream->floating = 0; -+ SET(SNDCTL_DSP_CHANNELS, stream->params.channels); -+ SET(SNDCTL_DSP_SPEED, stream->params.rate); -+ switch (stream->params.format) { -+ case CUBEB_SAMPLE_S16LE: -+ SET(SNDCTL_DSP_SETFMT, AFMT_S16_LE); -+ break; -+ case CUBEB_SAMPLE_S16BE: -+ SET(SNDCTL_DSP_SETFMT, AFMT_S16_BE); -+ break; -+ case CUBEB_SAMPLE_FLOAT32LE: -+ SET(SNDCTL_DSP_SETFMT, AFMT_S16_NE); -+ stream->floating = 1; -+ break; -+ default: -+ close(stream->fd); -+ free(stream); -+ return CUBEB_ERROR; -+ } -+ -+ -+ pthread_mutex_init(&stream->state_mutex, NULL); -+ pthread_cond_init(&stream->state_cond, NULL); -+ -+ stream->running = 1; -+ stream->stopped = 1; -+ stream->position_bytes = 0; -+ stream->last_position_bytes = 0; -+ stream->written_frags = 0; -+ stream->missed_frags = 0; -+ -+ pthread_create(&stream->th, NULL, writer, (void*)stream); -+ -+ *stm = stream; -+ -+ return CUBEB_OK; -+} -+ -+static void oss_stream_destroy(cubeb_stream * stream) -+{ -+ pthread_mutex_lock(&stream->state_mutex); -+ -+ stream->running = 0; -+ stream->stopped = 0; -+ pthread_cond_signal(&stream->state_cond); -+ -+ pthread_mutex_unlock(&stream->state_mutex); -+ -+ pthread_join(stream->th, NULL); -+ -+ pthread_mutex_destroy(&stream->state_mutex); -+ pthread_cond_destroy(&stream->state_cond); -+ close(stream->fd); -+ free(stream); -+} -+ -+static int oss_stream_get_latency(cubeb_stream * stream, uint32_t * latency) -+{ -+ if (ioctl(stream->fd, SNDCTL_DSP_GETODELAY, latency)==-1) { -+ return CUBEB_ERROR; -+ } -+ /* Convert latency from bytes to frames */ -+ *latency /= stream->params.channels*sizeof(int16_t); -+ return CUBEB_OK; -+} -+ -+ -+static int oss_stream_current_optr(cubeb_stream * stream, uint64_t * position) -+{ -+ count_info ci; -+ /* Unfortunately, this ioctl is only available in OSS 4.x */ -+#ifdef SNDCTL_DSP_CURRENT_OPTR -+ oss_count_t count; -+ if (ioctl(stream->fd, SNDCTL_DSP_CURRENT_OPTR, &count) != -1) { -+ *position = count.samples;// + count.fifo_samples; -+ return CUBEB_OK; -+ } -+#endif -+ /* Fall back to this ioctl in case the previous one fails */ -+ if (ioctl(stream->fd, SNDCTL_DSP_GETOPTR, &ci) == -1) { -+ return CUBEB_ERROR; -+ } -+ /* ci.bytes is only 32 bit and will start to wrap after arithmetic overflow */ -+ stream->position_bytes += ci.bytes - stream->last_position_bytes; -+ stream->last_position_bytes = ci.bytes; -+ *position = stream->position_bytes/stream->params.channels/sizeof(int16_t); -+ return CUBEB_OK; -+} -+ -+static int oss_stream_get_position(cubeb_stream * stream, uint64_t * position) -+{ -+ if ( oss_stream_current_optr(stream, position) == CUBEB_OK ){ -+ *position -= stream->missed_frags; -+ return CUBEB_OK; -+ } -+ /* If no correct method to get position works we resort to this */ -+ *position = stream->written_frags; -+ return CUBEB_OK; -+} -+ -+ -+static int oss_stream_start(cubeb_stream * stream) -+{ -+ pthread_mutex_lock(&stream->state_mutex); -+ if (stream->stopped) { -+ uint64_t ptr; -+ oss_stream_current_optr(stream, &ptr); -+ stream->missed_frags = ptr - stream->written_frags; -+ stream->stopped = 0; -+ pthread_cond_signal(&stream->state_cond); -+ } -+ pthread_mutex_unlock(&stream->state_mutex); -+ return CUBEB_OK; -+} -+ -+static int oss_stream_stop(cubeb_stream * stream) -+{ -+ pthread_mutex_lock(&stream->state_mutex); -+ stream->stopped = 1; -+ pthread_mutex_unlock(&stream->state_mutex); -+ return CUBEB_OK; -+} -+ -+int oss_stream_set_panning(cubeb_stream * stream, float panning) -+{ -+ if (stream->params.channels == 2) { -+ stream->panning=panning; -+ } -+ return CUBEB_OK; -+} -+ -+int oss_stream_set_volume(cubeb_stream * stream, float volume) -+{ -+ stream->volume=volume; -+ return CUBEB_OK; -+} -+ -+static struct cubeb_ops const oss_ops = { -+ .init = oss_init, -+ .get_backend_id = oss_get_backend_id, -+ .get_max_channel_count = oss_get_max_channel_count, -+ .get_min_latency = oss_get_min_latency, -+ .get_preferred_sample_rate = oss_get_preferred_sample_rate, -+ .get_preferred_channel_layout = NULL, -+ .destroy = oss_destroy, -+ .enumerate_devices = NULL, -+ .stream_init = oss_stream_init, -+ .stream_destroy = oss_stream_destroy, -+ .stream_start = oss_stream_start, -+ .stream_stop = oss_stream_stop, -+ .stream_get_position = oss_stream_get_position, -+ .stream_get_latency = oss_stream_get_latency, -+ .stream_set_volume = oss_stream_set_volume, -+ .stream_set_panning = oss_stream_set_panning, -+ .stream_get_current_device = NULL, -+ .stream_device_destroy = NULL, -+ .stream_register_device_changed_callback = NULL, -+ .register_device_collection_changed = NULL -+}; -diff --git media/libcubeb/src/moz.build media/libcubeb/src/moz.build -index fc9c79198e30..57d039d5a0f2 100644 ---- media/libcubeb/src/moz.build -+++ media/libcubeb/src/moz.build -@@ -20,6 +20,12 @@ if CONFIG['MOZ_ALSA']: - ] - DEFINES['USE_ALSA'] = True - -+if CONFIG['MOZ_OSS']: -+ SOURCES += [ -+ 'cubeb_oss.c', -+ ] -+ DEFINES['USE_OSS'] = True -+ - if CONFIG['MOZ_PULSEAUDIO'] or CONFIG['MOZ_JACK']: - SOURCES += [ - 'cubeb_resampler.cpp', -@@ -92,6 +98,7 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk': - '%' + '%s/system/media/wilhelm/include' % CONFIG['ANDROID_SOURCE'], - ] - -+CFLAGS += CONFIG['MOZ_OSS_CFLAGS'] - CFLAGS += CONFIG['MOZ_ALSA_CFLAGS'] - CFLAGS += CONFIG['MOZ_PULSEAUDIO_CFLAGS'] - -diff --git media/libcubeb/gtest/moz.build media/libcubeb/gtest/moz.build -index e99968648554..efbbbf779e11 100644 ---- media/libcubeb/gtest/moz.build -+++ media/libcubeb/gtest/moz.build -@@ -71,7 +71,6 @@ elif CONFIG['OS_TARGET'] == 'OpenBSD': - 'sndio', - ] - else: -- OS_LIBS += CONFIG['MOZ_ALSA_LIBS'] - OS_LIBS += CONFIG['MOZ_PULSEAUDIO_LIBS'] - - if CONFIG['GNU_CXX']: -diff --git media/libcubeb/update.sh media/libcubeb/update.sh -index b139b8f497fd..d1f8a223c6d8 100755 ---- media/libcubeb/update.sh -+++ media/libcubeb/update.sh -@@ -20,6 +20,7 @@ cp $1/src/cubeb_log.h src - cp $1/src/cubeb_mixer.cpp src - cp $1/src/cubeb_mixer.h src - cp $1/src/cubeb_opensl.c src -+cp $1/src/cubeb_oss.c src - cp $1/src/cubeb_osx_run_loop.h src - cp $1/src/cubeb_panner.cpp src - cp $1/src/cubeb_panner.h src -diff --git toolkit/library/moz.build toolkit/library/moz.build -index a61c689c83c3..7764df6f8a6b 100644 ---- toolkit/library/moz.build -+++ toolkit/library/moz.build -@@ -242,8 +242,8 @@ if CONFIG['MOZ_SYSTEM_LIBVPX']: - if not CONFIG['MOZ_TREE_PIXMAN']: - OS_LIBS += CONFIG['MOZ_PIXMAN_LIBS'] - --if CONFIG['MOZ_ALSA']: -- OS_LIBS += CONFIG['MOZ_ALSA_LIBS'] -+if CONFIG['MOZ_OSS']: -+ OS_LIBS += CONFIG['MOZ_OSS_LIBS'] - - if CONFIG['HAVE_CLOCK_MONOTONIC']: - OS_LIBS += CONFIG['REALTIME_LIBS'] diff --git a/www/waterfox/files/patch-bug1036008 b/www/waterfox/files/patch-bug1036008 deleted file mode 100644 index 7f50b456c30d..000000000000 --- a/www/waterfox/files/patch-bug1036008 +++ /dev/null @@ -1,523 +0,0 @@ -commit ed18f146242b -Author: Masayuki Nakano -Date: Fri Feb 16 15:54:07 2018 +0900 - - Bug 1036008 - Use alternative ASCII capable keyboard layout information to decide keyCode even if the key produces an ASCII punctuation character r=smaug - - Gecko decides keyCode from an ASCII character which is produced by the key - by itself or with Shift on active keyboard layout or alternative ASCII capable - keyboard layout if active keyboard layout isn't ASCII capable. However, we've - ignored alternative ASCII capable keyboard layout's character if both the - key itself and with Shift don't produce ASCII alphabet nor ASCII numeral, - i.e., ASCII punctuation characters are not used in alternative ASCII capable - keyboard layout because of avoiding mapping a keyCode value to 2 or more keys. - - However, setting 0 to keyCode value makes Firefox unusable with some web - applications which are aware of neither KeyboardEvent.key nor - KeyboardEvent.code. So, even if we map same keyCode value to a key, we should - avoid setting keyCode value to 0 as far as possible. - - This patch's approach is, we behave same keyCode value as the alternative ASCII - capable keyCode is selected when computed keyCode value of active keyboard - layout is 0. This means that we will make some language users whose keyboard - layout for their language is not ASCII capable can use global web services - which support US keyboard layout of Firefox since the new keyCode values - are mostly computed with US layout on Windows or actual alternative ASCII - capable keyboard layout on macOS and Linux. In other words, we cannot improve - compatibility with web applications which don't support Firefox by this patch - since our keyCode values are really different from Chrome's. So, unfortunately, - if we'd use exactly same keyCode computation as Chromium, we'd break - compatibility with existing web applications which are aware of Firefox since - it's necessary to check UA name or something before using keyCode values. - - Note that the most important difference between Windows and the others is, - such keyCode value is computed with alternative ASCII capable keyboard - layout on macOS and Linux but only on Windows, it's computed with OEM virtual - keycode. This means that only on Windows, the keyCode value may be different - from actual alternative ASCII capable keyboard layout's keyCode. - - MozReview-Commit-ID: As289r9wp6i - - --HG-- - extra : rebase_source : 66181403dbe8ca8dab893edc8f4eec1991d544d0 ---- - widget/TextEvents.h | 11 ++++++ - widget/WidgetEventImpl.cpp | 36 ++++++++++++++++++++ - widget/cocoa/TextInputHandler.mm | 43 ++++++++++++++---------- - widget/gtk/nsGtkKeyUtils.cpp | 64 ++++++++++++++++++++++++++--------- - widget/gtk/nsGtkKeyUtils.h | 10 ++++++ - widget/tests/test_keycodes.xul | 41 ++++++++++++----------- - widget/windows/KeyboardLayout.cpp | 70 ++++++++++++++++++++++++++++++++++++++- - 7 files changed, 223 insertions(+), 52 deletions(-) - -diff --git widget/TextEvents.h widget/TextEvents.h -index f1a67ecfdf3d..015331e8287d 100644 ---- widget/TextEvents.h -+++ widget/TextEvents.h -@@ -459,6 +459,17 @@ public: - GetDOMCodeName(mCodeNameIndex, aCodeName); - } - -+ /** -+ * GetFallbackKeyCodeOfPunctuationKey() returns a DOM keyCode value for -+ * aCodeNameIndex. This is keyCode value of the key when active keyboard -+ * layout is ANSI (US), JIS or ABNT keyboard layout (the latter 2 layouts -+ * are used only when ANSI doesn't have the key). The result is useful -+ * if the key doesn't produce ASCII character with active keyboard layout -+ * nor with alternative ASCII capable keyboard layout. -+ */ -+ static uint32_t -+ GetFallbackKeyCodeOfPunctuationKey(CodeNameIndex aCodeNameIndex); -+ - bool IsModifierKeyEvent() const - { - return GetModifierForKeyName(mKeyNameIndex) != MODIFIER_NONE; -diff --git widget/WidgetEventImpl.cpp widget/WidgetEventImpl.cpp -index 5415d9889be9..c379e7301b21 100644 ---- widget/WidgetEventImpl.cpp -+++ widget/WidgetEventImpl.cpp -@@ -1183,6 +1183,42 @@ WidgetKeyboardEvent::GetCodeNameIndex(const nsAString& aCodeValue) - return result; - } - -+/* static */ uint32_t -+WidgetKeyboardEvent::GetFallbackKeyCodeOfPunctuationKey( -+ CodeNameIndex aCodeNameIndex) -+{ -+ switch (aCodeNameIndex) { -+ case CODE_NAME_INDEX_Semicolon: // VK_OEM_1 on Windows -+ return nsIDOMKeyEvent::DOM_VK_SEMICOLON; -+ case CODE_NAME_INDEX_Equal: // VK_OEM_PLUS on Windows -+ return nsIDOMKeyEvent::DOM_VK_EQUALS; -+ case CODE_NAME_INDEX_Comma: // VK_OEM_COMMA on Windows -+ return nsIDOMKeyEvent::DOM_VK_COMMA; -+ case CODE_NAME_INDEX_Minus: // VK_OEM_MINUS on Windows -+ return nsIDOMKeyEvent::DOM_VK_HYPHEN_MINUS; -+ case CODE_NAME_INDEX_Period: // VK_OEM_PERIOD on Windows -+ return nsIDOMKeyEvent::DOM_VK_PERIOD; -+ case CODE_NAME_INDEX_Slash: // VK_OEM_2 on Windows -+ return nsIDOMKeyEvent::DOM_VK_SLASH; -+ case CODE_NAME_INDEX_Backquote: // VK_OEM_3 on Windows -+ return nsIDOMKeyEvent::DOM_VK_BACK_QUOTE; -+ case CODE_NAME_INDEX_BracketLeft: // VK_OEM_4 on Windows -+ return nsIDOMKeyEvent::DOM_VK_OPEN_BRACKET; -+ case CODE_NAME_INDEX_Backslash: // VK_OEM_5 on Windows -+ return nsIDOMKeyEvent::DOM_VK_BACK_SLASH; -+ case CODE_NAME_INDEX_BracketRight: // VK_OEM_6 on Windows -+ return nsIDOMKeyEvent::DOM_VK_CLOSE_BRACKET; -+ case CODE_NAME_INDEX_Quote: // VK_OEM_7 on Windows -+ return nsIDOMKeyEvent::DOM_VK_QUOTE; -+ case CODE_NAME_INDEX_IntlBackslash: // VK_OEM_5 on Windows (ABNT, etc) -+ case CODE_NAME_INDEX_IntlYen: // VK_OEM_5 on Windows (JIS) -+ case CODE_NAME_INDEX_IntlRo: // VK_OEM_102 on Windows -+ return nsIDOMKeyEvent::DOM_VK_BACK_SLASH; -+ default: -+ return 0; -+ } -+} -+ - /* static */ const char* - WidgetKeyboardEvent::GetCommandStr(Command aCommand) - { -diff --git widget/cocoa/TextInputHandler.mm widget/cocoa/TextInputHandler.mm -index 437d8222ab3b..106ef0e91f52 100644 ---- widget/cocoa/TextInputHandler.mm -+++ widget/cocoa/TextInputHandler.mm -@@ -1410,25 +1410,34 @@ TISInputSourceWrapper::ComputeGeckoKeyCode(UInt32 aNativeKeyCode, - return keyCode; - } - -- // If this is ASCII capable, give up to compute it. -- if (IsASCIICapable()) { -- return 0; -+ if (!IsASCIICapable()) { -+ // Retry with ASCII capable keyboard layout. -+ TISInputSourceWrapper currentKeyboardLayout; -+ currentKeyboardLayout.InitByCurrentASCIICapableKeyboardLayout(); -+ NS_ENSURE_TRUE(mInputSource != currentKeyboardLayout.mInputSource, 0); -+ keyCode = currentKeyboardLayout.ComputeGeckoKeyCode(aNativeKeyCode, aKbType, -+ aCmdIsPressed); -+ // We've returned 0 for long time if keyCode isn't for an alphabet keys or -+ // a numeric key even in alternative ASCII capable keyboard layout because -+ // we decided that we should avoid setting same keyCode value to 2 or -+ // more keys since active keyboard layout may have a key to input the -+ // punctuation with different key. However, setting keyCode to 0 makes -+ // some web applications which are aware of neither KeyboardEvent.key nor -+ // KeyboardEvent.code not work with Firefox when user selects non-ASCII -+ // capable keyboard layout such as Russian and Thai. So, if alternative -+ // ASCII capable keyboard layout has keyCode value for the key, we should -+ // use it. In other words, this behavior does that non-ASCII capable -+ // keyboard layout overrides some keys' keyCode value only if the key -+ // produces ASCII character by itself or with Shift key. -+ if (keyCode) { -+ return keyCode; -+ } - } - -- // Retry with ASCII capable keyboard layout. -- TISInputSourceWrapper currentKeyboardLayout; -- currentKeyboardLayout.InitByCurrentASCIICapableKeyboardLayout(); -- NS_ENSURE_TRUE(mInputSource != currentKeyboardLayout.mInputSource, 0); -- keyCode = currentKeyboardLayout.ComputeGeckoKeyCode(aNativeKeyCode, aKbType, -- aCmdIsPressed); -- -- // However, if keyCode isn't for an alphabet keys or a numeric key, we should -- // ignore it. For example, comma key of Thai layout is same as close-square- -- // bracket key of US layout and an unicode character key of Thai layout is -- // same as comma key of US layout. If we return NS_VK_COMMA for latter key, -- // web application developers cannot distinguish with the former key. -- return ((keyCode >= NS_VK_A && keyCode <= NS_VK_Z) || -- (keyCode >= NS_VK_0 && keyCode <= NS_VK_9)) ? keyCode : 0; -+ // Otherwise, let's decide keyCode value from the native virtual keycode -+ // value on major keyboard layout. -+ CodeNameIndex code = ComputeGeckoCodeNameIndex(aNativeKeyCode, aKbType); -+ return WidgetKeyboardEvent::GetFallbackKeyCodeOfPunctuationKey(code); - } - - // static -diff --git widget/gtk/nsGtkKeyUtils.cpp widget/gtk/nsGtkKeyUtils.cpp -index bda2c2920248..a336c1ad6c92 100644 ---- widget/gtk/nsGtkKeyUtils.cpp -+++ widget/gtk/nsGtkKeyUtils.cpp -@@ -795,7 +795,7 @@ KeymapWrapper::ComputeDOMKeyCode(const GdkEventKey* aGdkKeyEvent) - - // If the unmodified character is not an ASCII character, that means we - // couldn't find the hint. We should reset it. -- if (unmodifiedChar > 0x7F) { -+ if (!IsPrintableASCIICharacter(unmodifiedChar)) { - unmodifiedChar = 0; - } - -@@ -814,7 +814,7 @@ KeymapWrapper::ComputeDOMKeyCode(const GdkEventKey* aGdkKeyEvent) - - // If the shifted unmodified character isn't an ASCII character, we should - // discard it too. -- if (shiftedChar > 0x7F) { -+ if (!IsPrintableASCIICharacter(shiftedChar)) { - shiftedChar = 0; - } - -@@ -822,14 +822,12 @@ KeymapWrapper::ComputeDOMKeyCode(const GdkEventKey* aGdkKeyEvent) - // look for ASCII alphabet inputtable keyboard layout. If the key - // inputs an ASCII alphabet or an ASCII numeric, we should use it - // for deciding our keyCode. -- // Note that it's important not to use alternative keyboard layout for ASCII -- // alphabet inputabble keyboard layout because the keycode for the key with -- // alternative keyboard layout may conflict with another key on current -- // keyboard layout. -+ uint32_t unmodCharLatin = 0; -+ uint32_t shiftedCharLatin = 0; - if (!keymapWrapper->IsLatinGroup(aGdkKeyEvent->group)) { - gint minGroup = keymapWrapper->GetFirstLatinGroup(); - if (minGroup >= 0) { -- uint32_t unmodCharLatin = -+ unmodCharLatin = - keymapWrapper->GetCharCodeFor(aGdkKeyEvent, baseState, - minGroup); - if (IsBasicLatinLetterOrNumeral(unmodCharLatin)) { -@@ -837,7 +835,13 @@ KeymapWrapper::ComputeDOMKeyCode(const GdkEventKey* aGdkKeyEvent) - // an ASCII numeric, we should use it for the keyCode. - return WidgetUtils::ComputeKeyCodeFromChar(unmodCharLatin); - } -- uint32_t shiftedCharLatin = -+ // If the unmodified character in the alternative ASCII capable -+ // keyboard layout isn't an ASCII character, that means we couldn't -+ // find the hint. We should reset it. -+ if (!IsPrintableASCIICharacter(unmodCharLatin)) { -+ unmodCharLatin = 0; -+ } -+ shiftedCharLatin = - keymapWrapper->GetCharCodeFor(aGdkKeyEvent, shiftState, - minGroup); - if (IsBasicLatinLetterOrNumeral(shiftedCharLatin)) { -@@ -845,16 +849,46 @@ KeymapWrapper::ComputeDOMKeyCode(const GdkEventKey* aGdkKeyEvent) - // numeric, we should use it for the keyCode. - return WidgetUtils::ComputeKeyCodeFromChar(shiftedCharLatin); - } -+ // If the shifted unmodified character in the alternative ASCII -+ // capable keyboard layout isn't an ASCII character, we should -+ // discard it too. -+ if (!IsPrintableASCIICharacter(shiftedCharLatin)) { -+ shiftedCharLatin = 0; -+ } - } - } - -- // If unmodified character is in ASCII range, use it. Otherwise, use -- // shifted character. -- if (!unmodifiedChar && !shiftedChar) { -- return 0; -- } -- return WidgetUtils::ComputeKeyCodeFromChar( -- unmodifiedChar ? unmodifiedChar : shiftedChar); -+ // If the key itself or with Shift state on active keyboard layout produces -+ // an ASCII punctuation character, we should decide keyCode value with it. -+ if (unmodifiedChar || shiftedChar) { -+ return WidgetUtils::ComputeKeyCodeFromChar( -+ unmodifiedChar ? unmodifiedChar : shiftedChar); -+ } -+ -+ // If the key itself or with Shift state on alternative ASCII capable -+ // keyboard layout produces an ASCII punctuation character, we should -+ // decide keyCode value with it. Note that We've returned 0 for long -+ // time if keyCode isn't for an alphabet keys or a numeric key even in -+ // alternative ASCII capable keyboard layout because we decided that we -+ // should avoid setting same keyCode value to 2 or more keys since active -+ // keyboard layout may have a key to input the punctuation with different -+ // key. However, setting keyCode to 0 makes some web applications which -+ // are aware of neither KeyboardEvent.key nor KeyboardEvent.code not work -+ // with Firefox when user selects non-ASCII capable keyboard layout such -+ // as Russian and Thai. So, if alternative ASCII capable keyboard layout -+ // has keyCode value for the key, we should use it. In other words, this -+ // behavior means that non-ASCII capable keyboard layout overrides some -+ // keys' keyCode value only if the key produces ASCII character by itself -+ // or with Shift key. -+ if (unmodCharLatin || shiftedCharLatin) { -+ return WidgetUtils::ComputeKeyCodeFromChar( -+ unmodCharLatin ? unmodCharLatin : shiftedCharLatin); -+ } -+ -+ // Otherwise, let's decide keyCode value from the hardware_keycode -+ // value on major keyboard layout. -+ CodeNameIndex code = ComputeDOMCodeNameIndex(aGdkKeyEvent); -+ return WidgetKeyboardEvent::GetFallbackKeyCodeOfPunctuationKey(code); - } - - KeyNameIndex -diff --git widget/gtk/nsGtkKeyUtils.h widget/gtk/nsGtkKeyUtils.h -index 480d02322752..3dc8a4f6a936 100644 ---- widget/gtk/nsGtkKeyUtils.h -+++ widget/gtk/nsGtkKeyUtils.h -@@ -337,6 +337,16 @@ protected: - */ - static bool IsBasicLatinLetterOrNumeral(uint32_t aCharCode); - -+ /** -+ * IsPrintableASCIICharacter() checks whether the aCharCode is a printable -+ * ASCII character. I.e., returns false if aCharCode is a control -+ * character even in an ASCII character. -+ */ -+ static bool IsPrintableASCIICharacter(uint32_t aCharCode) -+ { -+ return aCharCode >= 0x20 && aCharCode <= 0x7E; -+ } -+ - /** - * GetGDKKeyvalWithoutModifier() returns the keyval for aGdkKeyEvent when - * ignoring the modifier state except NumLock. (NumLock is a key to change -diff --git widget/tests/test_keycodes.xul widget/tests/test_keycodes.xul -index 8a935e74a7f4..db789e8be367 100644 ---- widget/tests/test_keycodes.xul -+++ widget/tests/test_keycodes.xul -@@ -494,7 +494,7 @@ function* runKeyEventTests() - "a", "KeyA", nsIDOMKeyEvent.DOM_VK_A, "a", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - yield testKey({layout:KEYBOARD_LAYOUT_GERMAN, keyCode:MAC_VK_ANSI_LeftBracket, - modifiers: {}, chars:"\u00fc", unmodifiedChars:"\u00fc"}, -- "\u00fc", "BracketLeft", 0, "\u00fc", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ "\u00fc", "BracketLeft", nsIDOMKeyEvent.DOM_VK_OPEN_BRACKET, "\u00fc", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - yield testKey({layout:KEYBOARD_LAYOUT_GERMAN, keyCode:MAC_VK_ANSI_Minus, - modifiers: {}, chars:"\u00df", unmodifiedChars:"\u00df"}, - "\u00df", "Minus", nsIDOMKeyEvent.DOM_VK_QUESTION_MARK, "\u00df", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -@@ -2737,10 +2737,9 @@ function* runKeyEventTests() - yield testKey({layout:KEYBOARD_LAYOUT_THAI, keyCode:MAC_VK_ANSI_Quote, - modifiers:{}, chars:"\u0E07", unmodifiedChars:"\u0E07"}, - "\u0E07", "Quote", nsIDOMKeyEvent.DOM_VK_PERIOD, "\u0E07", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -- // keycode should be zero if the character of the key on the latest ASCII capable keyboard layout isn't for alphabet - yield testKey({layout:KEYBOARD_LAYOUT_THAI, keyCode:MAC_VK_ANSI_Period, - modifiers:{}, chars:"\u0E43", unmodifiedChars:"\u0E43"}, -- "\u0E43", "Period", 0, "\u0E43", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ "\u0E43", "Period", nsIDOMKeyEvent.DOM_VK_PERIOD, "\u0E43", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - // keycode should be DOM_VK_[0-9] if the key on the latest ASCII capable keyboard layout is for numeric - yield testKey({layout:KEYBOARD_LAYOUT_THAI, keyCode:MAC_VK_ANSI_1, - modifiers:{}, chars:"\u0E45", unmodifiedChars:"\u0E45"}, -@@ -4129,12 +4128,14 @@ function* runKeyEventTests() - "\u00E7", "Digit9", nsIDOMKeyEvent.DOM_VK_9, "\u00E7", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - - // OEM keys -+ // If the key doesn't cause ASCII character even with or without Shift key, keyCode value should be same as -+ // the key which causes the virtual keycode on ANSI keyboard layout. - yield testKey({layout:KEYBOARD_LAYOUT_FRENCH, keyCode:WIN_VK_OEM_7, - modifiers:{}, chars:"\u00B2"}, -- "\u00B2", "Backquote", 0, "\u00B2", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ "\u00B2", "Backquote", nsIDOMKeyEvent.DOM_VK_QUOTE, "\u00B2", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - yield testKey({layout:KEYBOARD_LAYOUT_FRENCH, keyCode:WIN_VK_OEM_7, - modifiers:{shiftKey:1}, chars:""}, -- "", "Backquote", 0, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ "", "Backquote", nsIDOMKeyEvent.DOM_VK_QUOTE, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - yield testKey({layout:KEYBOARD_LAYOUT_FRENCH, keyCode:WIN_VK_OEM_4, - modifiers:{}, chars:")"}, - ")", "Minus", nsIDOMKeyEvent.DOM_VK_CLOSE_PAREN, ")", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -@@ -4205,10 +4206,10 @@ function* runKeyEventTests() - // OEM keys with ShiftLock - yield testKey({layout:KEYBOARD_LAYOUT_FRENCH, keyCode:WIN_VK_OEM_7, - modifiers:{capsLockKey:1}, chars:"\u00B2"}, -- "\u00B2", "Backquote", 0, "\u00B2", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ "\u00B2", "Backquote", nsIDOMKeyEvent.DOM_VK_QUOTE, "\u00B2", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - yield testKey({layout:KEYBOARD_LAYOUT_FRENCH, keyCode:WIN_VK_OEM_7, - modifiers:{capsLockKey:1, shiftKey:1}, chars:""}, -- "", "Backquote", 0, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ "", "Backquote", nsIDOMKeyEvent.DOM_VK_QUOTE, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - yield testKey({layout:KEYBOARD_LAYOUT_FRENCH, keyCode:WIN_VK_OEM_4, - modifiers:{capsLockKey:1}, chars:"\u00B0"}, - "\u00B0", "Minus", nsIDOMKeyEvent.DOM_VK_CLOSE_PAREN, "\u00B0", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -@@ -4223,10 +4224,10 @@ function* runKeyEventTests() - "=", "Equal", nsIDOMKeyEvent.DOM_VK_EQUALS, "=", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - //yield testKey({layout:KEYBOARD_LAYOUT_FRENCH, keyCode:WIN_VK_OEM_6, - // modifiers:{capsLockKey:1}, chars:""}, -- // "Dead", "BracketLeft", 0, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); // Dead-key -+ // "Dead", "BracketLeft", nsIDOMKeyEvent.DOM_VK_CLOSE_BRACKET, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); // Dead-key - //yield testKey({layout:KEYBOARD_LAYOUT_FRENCH, keyCode:WIN_VK_OEM_6, - // modifiers:{capsLockKey:1, shiftKey:1}, chars:""}, -- // ["\u00A8\u00A8", "\u00A8", "\u00A8", "\u00A8"], "BracketLeft", 0, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); // Dead-key -+ // ["\u00A8\u00A8", "\u00A8", "\u00A8", "\u00A8"], "BracketLeft", nsIDOMKeyEvent.DOM_VK_CLOSE_BRACKET, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); // Dead-key - yield testKey({layout:KEYBOARD_LAYOUT_FRENCH, keyCode:WIN_VK_OEM_1, - modifiers:{capsLockKey:1}, chars:"\u00A3"}, - "\u00A3", "BracketRight", nsIDOMKeyEvent.DOM_VK_DOLLAR, "\u00A3", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -@@ -4496,56 +4497,56 @@ function* runKeyEventTests() - - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_OEM_7, - modifiers:{}, chars:""}, -- "Dead", "Quote", 0, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ "Dead", "Quote", nsIDOMKeyEvent.DOM_VK_QUOTE, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_OEM_7, - modifiers:{}, chars:"\u00B4\u00B4"}, -- ["\u00B4\u00B4", "\u00B4", "\u00B4", "\u00B4"], "Quote", 0, "\u00B4\u00B4", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ ["\u00B4\u00B4", "\u00B4", "\u00B4", "\u00B4"], "Quote", nsIDOMKeyEvent.DOM_VK_QUOTE, "\u00B4\u00B4", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_OEM_7, - modifiers:{}, chars:""}, -- "Dead", "Quote", 0, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ "Dead", "Quote", nsIDOMKeyEvent.DOM_VK_QUOTE, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_A, - modifiers:{}, chars:"\u00E1"}, - ["\u00E1", "\u00E1", "a"], "KeyA", nsIDOMKeyEvent.DOM_VK_A, "\u00E1", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_OEM_7, - modifiers:{}, chars:""}, -- "Dead", "Quote", 0, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ "Dead", "Quote", nsIDOMKeyEvent.DOM_VK_QUOTE, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_A, - modifiers:{shiftKey:1}, chars:"\u00C1"}, - ["\u00C1", "\u00C1", "A"], "KeyA", nsIDOMKeyEvent.DOM_VK_A, "\u00C1", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_OEM_7, - modifiers:{}, chars:""}, -- "Dead", "Quote", 0, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ "Dead", "Quote", nsIDOMKeyEvent.DOM_VK_QUOTE, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_Q, - modifiers:{}, chars:"\u00B4q"}, - ["\u00B4q", "\u00B4", "q", "q"], "KeyQ", nsIDOMKeyEvent.DOM_VK_Q, "\u00B4q", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_OEM_7, - modifiers:{shiftKey:1}, chars:""}, -- "Dead", "Quote", 0, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ "Dead", "Quote", nsIDOMKeyEvent.DOM_VK_QUOTE, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_OEM_7, - modifiers:{shiftKey:1}, chars:"\u00A8\u00A8"}, -- ["\u00A8\u00A8", "\u00A8", "\u00A8", "\u00A8"], "Quote", 0, "\u00A8\u00A8", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ ["\u00A8\u00A8", "\u00A8", "\u00A8", "\u00A8"], "Quote", nsIDOMKeyEvent.DOM_VK_QUOTE, "\u00A8\u00A8", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_OEM_7, - modifiers:{shiftKey:1}, chars:""}, -- "Dead", "Quote", 0, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ "Dead", "Quote", nsIDOMKeyEvent.DOM_VK_QUOTE, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_A, - modifiers:{shiftKey:1}, chars:"\u00C4"}, - ["\u00C4", "\u00C4", "A"], "KeyA", nsIDOMKeyEvent.DOM_VK_A, "\u00C4", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_OEM_7, - modifiers:{shiftKey:1}, chars:""}, -- "Dead", "Quote", 0, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ "Dead", "Quote", nsIDOMKeyEvent.DOM_VK_QUOTE, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_A, - modifiers:{}, chars:"\u00E4"}, - ["\u00E4", "\u00E4", "a"], "KeyA", nsIDOMKeyEvent.DOM_VK_A, "\u00E4", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_OEM_7, - modifiers:{shiftKey:1}, chars:""}, -- "Dead", "Quote", 0, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -+ "Dead", "Quote", nsIDOMKeyEvent.DOM_VK_QUOTE, "", SHOULD_DELIVER_KEYDOWN_KEYUP, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); - yield testKey({layout:KEYBOARD_LAYOUT_SPANISH, keyCode:WIN_VK_Q, - modifiers:{shiftKey:1}, chars:"\u00A8Q"}, - ["\u00A8Q", "\u00A8", "Q", "Q"], "KeyQ", nsIDOMKeyEvent.DOM_VK_Q, "\u00A8Q", SHOULD_DELIVER_ALL, KeyboardEvent.DOM_KEY_LOCATION_STANDARD); -diff --git widget/windows/KeyboardLayout.cpp widget/windows/KeyboardLayout.cpp -index e29c0b0655d9..947e914e4bef 100644 ---- widget/windows/KeyboardLayout.cpp -+++ widget/windows/KeyboardLayout.cpp -@@ -4721,7 +4721,75 @@ KeyboardLayout::ConvertNativeKeyCodeToDOMKeyCode(UINT aNativeKeyCode) const - uniChars = GetUniCharsAndModifiers(aNativeKeyCode, modKeyState); - if (uniChars.Length() != 1 || - uniChars.CharAt(0) < ' ' || uniChars.CharAt(0) > 0x7F) { -- return 0; -+ // In this case, we've returned 0 in this case for long time because -+ // we decided that we should avoid setting same keyCode value to 2 or -+ // more keys since active keyboard layout may have a key to input the -+ // punctuation with different key. However, setting keyCode to 0 -+ // makes some web applications which are aware of neither -+ // KeyboardEvent.key nor KeyboardEvent.code not work with Firefox -+ // when user selects non-ASCII capable keyboard layout such as -+ // Russian and Thai layout. So, let's decide keyCode value with -+ // major keyboard layout's key which causes the OEM keycode. -+ // Actually, this maps same keyCode value to 2 keys on Russian -+ // keyboard layout. "Period" key causes VK_OEM_PERIOD but inputs -+ // Yu of Cyrillic and "Slash" key causes VK_OEM_2 (same as US -+ // keyboard layout) but inputs "." (period of ASCII). Therefore, -+ // we return DOM_VK_PERIOD which is same as VK_OEM_PERIOD for -+ // "Period" key. On the other hand, we use same keyCode value for -+ // "Slash" key too because it inputs ".". -+ CodeNameIndex code; -+ switch (aNativeKeyCode) { -+ case VK_OEM_1: -+ code = CODE_NAME_INDEX_Semicolon; -+ break; -+ case VK_OEM_PLUS: -+ code = CODE_NAME_INDEX_Equal; -+ break; -+ case VK_OEM_COMMA: -+ code = CODE_NAME_INDEX_Comma; -+ break; -+ case VK_OEM_MINUS: -+ code = CODE_NAME_INDEX_Minus; -+ break; -+ case VK_OEM_PERIOD: -+ code = CODE_NAME_INDEX_Period; -+ break; -+ case VK_OEM_2: -+ code = CODE_NAME_INDEX_Slash; -+ break; -+ case VK_OEM_3: -+ code = CODE_NAME_INDEX_Backquote; -+ break; -+ case VK_OEM_4: -+ code = CODE_NAME_INDEX_BracketLeft; -+ break; -+ case VK_OEM_5: -+ code = CODE_NAME_INDEX_Backslash; -+ break; -+ case VK_OEM_6: -+ code = CODE_NAME_INDEX_BracketRight; -+ break; -+ case VK_OEM_7: -+ code = CODE_NAME_INDEX_Quote; -+ break; -+ case VK_OEM_8: -+ // Use keyCode value for "Backquote" key on UK keyboard layout. -+ code = CODE_NAME_INDEX_Backquote; -+ break; -+ case VK_OEM_102: -+ // Use keyCode value for "IntlBackslash" key. -+ code = CODE_NAME_INDEX_IntlBackslash; -+ break; -+ case VK_ABNT_C1: // "/" of ABNT. -+ // Use keyCode value for "IntlBackslash" key on ABNT keyboard -+ // layout. -+ code = CODE_NAME_INDEX_IntlBackslash; -+ break; -+ default: -+ MOZ_ASSERT_UNREACHABLE("Handle all OEM keycode values"); -+ return 0; -+ } -+ return WidgetKeyboardEvent::GetFallbackKeyCodeOfPunctuationKey(code); - } - } - return WidgetUtils::ComputeKeyCodeFromChar(uniChars.CharAt(0)); diff --git a/www/waterfox/files/patch-bug1134077 b/www/waterfox/files/patch-bug1134077 deleted file mode 100644 index ba8b29523d64..000000000000 --- a/www/waterfox/files/patch-bug1134077 +++ /dev/null @@ -1,65 +0,0 @@ -commit a67756af6ac4 -Author: decltype -Date: Fri Feb 2 18:39:37 2018 +0100 - - Bug 1134077 - X11: Set EWMH property to keep top-level nsWindows composited. r=karlt - - Some compositors such as GNOME mutter use heuristics to unredirect fullscreen - windows in an effort to reduce output latency. This works fine for applications - that take the proper steps to ensure all framebuffer updates happen in the - vblank interval. Since this is not currently the case for Firefox, bypassing - the compositor will lead to frame tearing. - - Set _NET_WM_BYPASS_COMPOSITOR to 2 to opt out of fullscreen unredirection. - - MozReview-Commit-ID: 1xW2VAnbiJw - - --HG-- - extra : rebase_source : 77c4ae490413057d8d9dadf9b155c86ddbbcb4b5 ---- - widget/gtk/mozgtk/mozgtk.c | 1 + - widget/gtk/nsWindow.cpp | 19 +++++++++++++++++++ - 2 files changed, 20 insertions(+) - -diff --git widget/gtk/mozgtk/mozgtk.c widget/gtk/mozgtk/mozgtk.c -index a182d9b278e7..023cd192d522 100644 ---- widget/gtk/mozgtk/mozgtk.c -+++ widget/gtk/mozgtk/mozgtk.c -@@ -52,6 +52,7 @@ STUB(gdk_keyval_to_unicode) - STUB(gdk_pango_context_get) - STUB(gdk_pointer_grab) - STUB(gdk_pointer_ungrab) -+STUB(gdk_property_change) - STUB(gdk_property_get) - STUB(gdk_screen_get_default) - STUB(gdk_screen_get_display) -diff --git widget/gtk/nsWindow.cpp widget/gtk/nsWindow.cpp -index 0e75cc8c5968..b59ac05dd3c4 100644 ---- widget/gtk/nsWindow.cpp -+++ widget/gtk/nsWindow.cpp -@@ -3803,6 +3803,25 @@ nsWindow::Create(nsIWidget* aParent, - cairo_region_destroy(region); - } - } -+ -+#ifdef MOZ_X11 -+ // Set window manager hint to keep fullscreen windows composited. -+ // -+ // If the window were to get unredirected, there could be visible -+ // tearing because Gecko does not align its framebuffer updates with -+ // vblank. -+ if (mIsX11Display) { -+ gulong value = 2; // Opt out of unredirection -+ GdkAtom cardinal_atom = gdk_x11_xatom_to_atom(XA_CARDINAL); -+ gdk_property_change(gtk_widget_get_window(mShell), -+ gdk_atom_intern("_NET_WM_BYPASS_COMPOSITOR", FALSE), -+ cardinal_atom, -+ 32, // format -+ GDK_PROP_MODE_REPLACE, -+ (guchar*)&value, -+ 1); -+ } -+#endif - } - break; - diff --git a/www/waterfox/files/patch-bug1144632 b/www/waterfox/files/patch-bug1144632 deleted file mode 100644 index fee10b5db317..000000000000 --- a/www/waterfox/files/patch-bug1144632 +++ /dev/null @@ -1,23 +0,0 @@ -Revert bug 1323303 to unbreak build on big-endian architectures. - -diff --git toolkit/moz.configure toolkit/moz.configure -index 67fcbc39d075..c117fd11a358 100644 ---- toolkit/moz.configure -+++ toolkit/moz.configure -@@ -1032,11 +1032,11 @@ add_old_configure_assignment('NECKO_PROTOCOLS', necko_protocols) - # ============================================================== - option('--disable-skia', help='Disable use of Skia') - --@depends('--disable-skia') --def skia(value): -- if not value: -- die('--disable-skia is not supported anymore') -- else: -+@depends('--disable-skia', target) -+def skia(value, target): -+ if value.origin == 'default' and target.endianness == 'big': -+ return None -+ if value: - return True - - set_config('MOZ_ENABLE_SKIA', skia) diff --git a/www/waterfox/files/patch-bug1186967 b/www/waterfox/files/patch-bug1186967 deleted file mode 100644 index 26d304fbd3e9..000000000000 --- a/www/waterfox/files/patch-bug1186967 +++ /dev/null @@ -1,41 +0,0 @@ -commit 64bb4e051b50 -Author: Martin Stransky -Date: Tue Oct 17 09:50:18 2017 +0200 - - Bug 1186967 - ignore double-click on WM without _NET_WM_MOVERESIZE support, r=jhorak - - MozReview-Commit-ID: 2Vs6i5leero - - --HG-- - extra : rebase_source : d8f2bbaf9ef9b2025478f029a68ee7e87e07de79 ---- - widget/gtk/nsWindow.cpp | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git widget/gtk/nsWindow.cpp widget/gtk/nsWindow.cpp -index eb2f0e5e95cd..955327297ac9 100644 ---- widget/gtk/nsWindow.cpp -+++ widget/gtk/nsWindow.cpp -@@ -6444,6 +6444,22 @@ nsWindow::GetDragInfo(WidgetMouseEvent* aMouseEvent, - return false; - } - -+ if (mIsX11Display) { -+ // Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=789054 -+ // To avoid crashes disable double-click on WM without _NET_WM_MOVERESIZE. -+ // See _should_perform_ewmh_drag() at gdkwindow-x11.c -+ GdkScreen* screen = gdk_window_get_screen(gdk_window); -+ GdkAtom atom = gdk_atom_intern("_NET_WM_MOVERESIZE", FALSE); -+ if (!gdk_x11_screen_supports_net_wm_hint(screen, atom)) { -+ static unsigned int lastTimeStamp = 0; -+ if (lastTimeStamp != aMouseEvent->mTime) { -+ lastTimeStamp = aMouseEvent->mTime; -+ } else { -+ return false; -+ } -+ } -+ } -+ - // FIXME: It would be nice to have the widget position at the time - // of the event, but it's relatively unlikely that the widget has - // moved since the mousedown. (On the other hand, it's quite likely diff --git a/www/waterfox/files/patch-bug1203273 b/www/waterfox/files/patch-bug1203273 deleted file mode 100644 index 31894b5bb011..000000000000 --- a/www/waterfox/files/patch-bug1203273 +++ /dev/null @@ -1,68 +0,0 @@ -commit 18bd60050c9c -Author: Jon Coppeard -Date: Tue Mar 20 10:19:37 2018 +0000 - - Bug 1203273 - Add a canary to check gray buffers are valid. r=sfink, a=RyanVM - - --HG-- - extra : source : b1dacff4b3744f303f04ad9f53c670608af8b17a ---- - js/src/gc/RootMarking.cpp | 23 ++++++++++++++++++++++- - 1 file changed, 22 insertions(+), 1 deletion(-) - -diff --git js/src/gc/RootMarking.cpp js/src/gc/RootMarking.cpp -index 384edb9fdd2a..a5c408b687b9 100644 ---- js/src/gc/RootMarking.cpp -+++ js/src/gc/RootMarking.cpp -@@ -460,6 +460,7 @@ class BufferGrayRootsTracer final : public JS::CallbackTracer - {} - - bool failed() const { return bufferingGrayRootsFailed; } -+ void setFailed() { bufferingGrayRootsFailed = true; } - - #ifdef DEBUG - TracerKind getTracerKind() const override { return TracerKind::GrayBuffering; } -@@ -477,6 +478,9 @@ js::IsBufferGrayRootsTracer(JSTracer* trc) - } - #endif - -+// A canary value used to check the gray buffer contents are valid. -+static Cell* const GrayBufferCanary = reinterpret_cast(0x47726179); // "Gray" -+ - void - js::gc::GCRuntime::bufferGrayRoots() - { -@@ -490,6 +494,12 @@ js::gc::GCRuntime::bufferGrayRoots() - if (JSTraceDataOp op = grayRootTracer.op) - (*op)(&grayBufferer, grayRootTracer.data); - -+ // Push a canary value onto the end of the list. -+ for (GCZonesIter zone(rt); !zone.done(); zone.next()) { -+ if (!zone->gcGrayRoots().empty() && !zone->gcGrayRoots().append(GrayBufferCanary)) -+ grayBufferer.setFailed(); -+ } -+ - // Propagate the failure flag from the marker to the runtime. - if (grayBufferer.failed()) { - grayBufferState = GrayBufferState::Failed; -@@ -531,8 +541,19 @@ GCRuntime::markBufferedGrayRoots(JS::Zone* zone) - MOZ_ASSERT(grayBufferState == GrayBufferState::Okay); - MOZ_ASSERT(zone->isGCMarkingGray() || zone->isGCCompacting()); - -- for (auto cell : zone->gcGrayRoots()) -+ auto& roots = zone->gcGrayRoots(); -+ if (roots.empty()) -+ return; -+ -+ // Check for and remove canary value. -+ MOZ_RELEASE_ASSERT(roots.length() > 1); -+ MOZ_RELEASE_ASSERT(roots.back() == GrayBufferCanary); -+ roots.popBack(); -+ -+ for (auto cell : zone->gcGrayRoots()) { -+ MOZ_ASSERT(IsCellPointerValid(cell)); - TraceManuallyBarrieredGenericPointerEdge(&marker, &cell, "buffered gray root"); -+ } - } - - void diff --git a/www/waterfox/files/patch-bug1231203 b/www/waterfox/files/patch-bug1231203 deleted file mode 100644 index 7ce1d4e74325..000000000000 --- a/www/waterfox/files/patch-bug1231203 +++ /dev/null @@ -1,203 +0,0 @@ -commit ef357e507dd1 -Author: David Keeler -Date: Thu Feb 8 17:16:03 2018 -0800 - - bug 1231203 - ensure OCSP responses to requests from private contexts aren't cached on disk r=jcj a=ritu - - MozReview-Commit-ID: 374f7hERLee - - --HG-- - extra : source : ee10aee44d26bf6eb3ddc5f54ddbbbb4fdeb4b0d ---- - security/manager/ssl/nsNSSCallbacks.cpp | 12 ++- - security/manager/ssl/tests/unit/head_psm.js | 8 +- - .../ssl/tests/unit/test_ocsp_private_caching.js | 112 +++++++++++++++++++++ - security/manager/ssl/tests/unit/xpcshell.ini | 2 + - 4 files changed, 130 insertions(+), 4 deletions(-) - -diff --git security/manager/ssl/nsNSSCallbacks.cpp security/manager/ssl/nsNSSCallbacks.cpp -index 7288a7f2c725..d3b973362ab1 100644 ---- security/manager/ssl/nsNSSCallbacks.cpp -+++ security/manager/ssl/nsNSSCallbacks.cpp -@@ -119,13 +119,19 @@ nsHTTPDownloadEvent::Run() - chan->SetLoadFlags(nsIRequest::LOAD_ANONYMOUS | - nsIChannel::LOAD_BYPASS_SERVICE_WORKER); - -- // For OCSP requests, only the first party domain aspect of origin attributes -- // is used. This means that OCSP requests are shared across different -- // containers. -+ // For OCSP requests, only the first party domain and private browsing id -+ // aspects of origin attributes are used. This means that: -+ // a) if first party isolation is enabled, OCSP requests will be isolated -+ // according to the first party domain of the original https request -+ // b) OCSP requests are shared across different containers as long as first -+ // party isolation is not enabled and none of the containers are in private -+ // browsing mode. - if (mRequestSession->mOriginAttributes != OriginAttributes()) { - OriginAttributes attrs; - attrs.mFirstPartyDomain = - mRequestSession->mOriginAttributes.mFirstPartyDomain; -+ attrs.mPrivateBrowsingId = -+ mRequestSession->mOriginAttributes.mPrivateBrowsingId; - - nsCOMPtr loadInfo = chan->GetLoadInfo(); - if (loadInfo) { -diff --git security/manager/ssl/tests/unit/head_psm.js security/manager/ssl/tests/unit/head_psm.js -index 6e0d41125549..51e2beb7ce1d 100644 ---- security/manager/ssl/tests/unit/head_psm.js -+++ security/manager/ssl/tests/unit/head_psm.js -@@ -609,9 +609,12 @@ function getFailingHttpServer(serverPort, serverIdentities) { - // by which HTTP method the server is expected to be queried. - // expectedResponseTypes is an optional array of OCSP response types to use (see - // GenerateOCSPResponse.cpp). -+// responseHeaderPairs is an optional array of HTTP header (name, value) pairs -+// to set in each response. - function startOCSPResponder(serverPort, identity, nssDBLocation, - expectedCertNames, expectedBasePaths, -- expectedMethods, expectedResponseTypes) { -+ expectedMethods, expectedResponseTypes, -+ responseHeaderPairs = []) { - let ocspResponseGenerationArgs = expectedCertNames.map( - function(expectedNick) { - let responseType = "good"; -@@ -640,6 +643,9 @@ function startOCSPResponder(serverPort, identity, nssDBLocation, - } - aResponse.setStatusLine(aRequest.httpVersion, 200, "OK"); - aResponse.setHeader("Content-Type", "application/ocsp-response"); -+ for (let headerPair of responseHeaderPairs) { -+ aResponse.setHeader(headerPair[0], headerPair[1]); -+ } - aResponse.write(ocspResponses.shift()); - }); - httpServer.identity.setPrimary("http", identity, serverPort); -diff --git security/manager/ssl/tests/unit/test_ocsp_private_caching.js security/manager/ssl/tests/unit/test_ocsp_private_caching.js -new file mode 100644 -index 000000000000..b61252eb6e6f ---- /dev/null -+++ security/manager/ssl/tests/unit/test_ocsp_private_caching.js -@@ -0,0 +1,112 @@ -+// -*- indent-tabs-mode: nil; js-indent-level: 2 -*- -+// This Source Code Form is subject to the terms of the Mozilla Public -+// License, v. 2.0. If a copy of the MPL was not distributed with this -+// file, You can obtain one at http://mozilla.org/MPL/2.0/. -+ -+"use strict"; -+ -+// In which we connect to a host and encounter OCSP responses with the -+// Cache-Control header set, which Necko will normally cache. We need to ensure -+// that these responses aren't cached to disk when the original https request -+// was in a private context. -+ -+do_get_profile(); // must be called before getting nsIX509CertDB -+const certdb = Cc["@mozilla.org/security/x509certdb;1"] -+ .getService(Ci.nsIX509CertDB); -+ -+const SERVER_PORT = 8888; -+ -+function start_ocsp_responder(expectedCertNames, expectedPaths, -+ expectedMethods) { -+ return startOCSPResponder(SERVER_PORT, "www.example.com", -+ "test_ocsp_fetch_method", expectedCertNames, -+ expectedPaths, expectedMethods); -+} -+ -+function check_cert_err(cert_name, expected_error) { -+ let cert = constructCertFromFile("test_ocsp_fetch_method/" + cert_name + ".pem"); -+ return checkCertErrorGeneric(certdb, cert, expected_error, -+ certificateUsageSSLServer); -+} -+ -+function add_flush_cache() { -+ add_test(() => { -+ // This appears to either fire multiple times or fire once for every -+ // observer that has ever been passed to flush. To prevent multiple calls to -+ // run_next_test, keep track of if this observer has already called it. -+ let observed = false; -+ let observer = { observe: () => { -+ if (!observed) { -+ observed = true; -+ run_next_test(); -+ } -+ } -+ }; -+ Services.cache2.QueryInterface(Ci.nsICacheTesting).flush(observer); -+ }); -+} -+ -+function add_ocsp_necko_cache_test(loadContext, shouldFindEntry) { -+ // Pre-testcase cleanup/setup. -+ add_test(() => { -+ Services.cache2.clear(); -+ run_next_test(); -+ }); -+ add_flush_cache(); -+ -+ let responder; -+ add_test(() => { -+ clearOCSPCache(); -+ clearSessionCache(); -+ responder = startOCSPResponder(SERVER_PORT, "localhost", "ocsp_certs", -+ ["default-ee"], [], [], [], -+ [["Cache-Control", "max-age: 1000"]]); -+ run_next_test(); -+ }); -+ -+ // Prepare a connection that will cause an OCSP request. -+ add_connection_test("ocsp-stapling-none.example.com", PRErrorCodeSuccess, -+ null, null, null, loadContext.originAttributes); -+ -+ add_flush_cache(); -+ -+ // Traverse the cache and ensure the response made it into the cache with the -+ // appropriate properties (private or not private). -+ add_test(() => { -+ let foundEntry = false; -+ let visitor = { -+ onCacheStorageInfo() {}, -+ onCacheEntryInfo(aURI, aIdEnhance, aDataSize, aFetchCount, -+ aLastModifiedTime, aExpirationTime, aPinned, aInfo) { -+ Assert.equal(aURI.spec, "http://localhost:8888/", -+ "expected OCSP request URI should match"); -+ foundEntry = true; -+ }, -+ onCacheEntryVisitCompleted() { -+ Assert.equal(foundEntry, shouldFindEntry, -+ "should only find a cached entry if we're expecting one"); -+ run_next_test(); -+ }, -+ QueryInterface(iid) { -+ if (iid.equals(Ci.nsICacheStorageVisitor)) { -+ return this; -+ } -+ throw Cr.NS_ERROR_NO_INTERFACE; -+ }, -+ }; -+ Services.cache2.asyncVisitAllStorages(visitor, true); -+ }); -+ -+ // Clean up (stop the responder). -+ add_test(() => { -+ responder.stop(run_next_test); -+ }); -+} -+ -+function run_test() { -+ Services.prefs.setIntPref("security.OCSP.enabled", 1); -+ add_tls_server_setup("OCSPStaplingServer", "ocsp_certs"); -+ add_ocsp_necko_cache_test(Services.loadContextInfo.private, false); -+ add_ocsp_necko_cache_test(Services.loadContextInfo.default, true); -+ run_next_test(); -+} -diff --git security/manager/ssl/tests/unit/xpcshell.ini security/manager/ssl/tests/unit/xpcshell.ini -index b85c775514eb..4dbe59ac5e73 100644 ---- security/manager/ssl/tests/unit/xpcshell.ini -+++ security/manager/ssl/tests/unit/xpcshell.ini -@@ -121,6 +121,8 @@ run-sequentially = hardcoded ports - run-sequentially = hardcoded ports - [test_ocsp_must_staple.js] - run-sequentially = hardcoded ports -+[test_ocsp_private_caching.js] -+run-sequentially = hardcoded ports - [test_ocsp_no_hsts_upgrade.js] - run-sequentially = hardcoded ports - [test_ocsp_required.js] diff --git a/www/waterfox/files/patch-bug1246883 b/www/waterfox/files/patch-bug1246883 deleted file mode 100644 index b515debb9f2b..000000000000 --- a/www/waterfox/files/patch-bug1246883 +++ /dev/null @@ -1,56 +0,0 @@ -commit b175b27efefd -Author: Mantaroh Yoshinaga -Date: Wed Dec 13 08:58:05 2017 +0900 - - Bug 1246883 - Load UA Stylesheet when printing the SVG document. r=jwatt, a=gchang - - Currently, Gecko load only minimal-xul.css if the document is the SVG[1]. - In the case of printing SVG document, gecko should load ua.css for using style - which related to print. - - This patch will load ua.css when printing the SVG document. - - [1] http://searchfox.org/mozilla-central/rev/67f38de2443e6b613d874fcf4d2cd1f2fc3d5e97/layout/base/nsDocumentViewer.cpp#2472 - - MozReview-Commit-ID: JtdaEvX8QTw - - --HG-- - extra : source : 727a90ad06e715b3a4457b2532e922d22a2469a2 ---- - layout/printing/nsPrintEngine.cpp | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git layout/printing/nsPrintEngine.cpp layout/printing/nsPrintEngine.cpp -index f8d8f1077ba5..3ac2211d159d 100644 ---- layout/printing/nsPrintEngine.cpp -+++ layout/printing/nsPrintEngine.cpp -@@ -75,6 +75,7 @@ static const char kPrintingPromptService[] = "@mozilla.org/embedcomp/printingpro - #include "nsISupportsUtils.h" - #include "nsIScriptContext.h" - #include "nsIDOMDocument.h" -+#include "nsIDocumentObserver.h" - #include "nsISelectionListener.h" - #include "nsISelectionPrivate.h" - #include "nsIDOMRange.h" -@@ -82,6 +83,7 @@ static const char kPrintingPromptService[] = "@mozilla.org/embedcomp/printingpro - #include "nsLayoutCID.h" - #include "nsContentUtils.h" - #include "nsIPresShell.h" -+#include "nsLayoutStylesheetCache.h" - #include "nsLayoutUtils.h" - #include "mozilla/Preferences.h" - -@@ -2267,6 +2269,13 @@ nsPrintEngine::ReflowPrintObject(const UniquePtr& aPO) - - StyleSetHandle styleSet = mDocViewerPrint->CreateStyleSet(aPO->mDocument); - -+ if (aPO->mDocument->IsSVGDocument()) { -+ // The SVG document only loads minimal-xul.css, so it doesn't apply other -+ // styles. We should add ua.css for applying style which related to print. -+ auto cache = nsLayoutStylesheetCache::For(aPO->mDocument->GetStyleBackendType()); -+ styleSet->PrependStyleSheet(SheetType::Agent, cache->UASheet()); -+ } -+ - aPO->mPresShell = aPO->mDocument->CreateShell(aPO->mPresContext, - aPO->mViewManager, styleSet); - if (!aPO->mPresShell) { diff --git a/www/waterfox/files/patch-bug1275062 b/www/waterfox/files/patch-bug1275062 deleted file mode 100644 index e9183ad9a677..000000000000 --- a/www/waterfox/files/patch-bug1275062 +++ /dev/null @@ -1,344 +0,0 @@ -commit 7b030826befa -Author: Andrea Marchesini -Date: Sat Jan 27 13:40:58 2018 +0100 - - Bug 1275062 - Introduce a size check of IPC messages for IndexedDB. r=asuth, a=lizzard - - --HG-- - extra : source : ca73f9471eded208cbf1206f22e0fe9f10550497 ---- - dom/indexedDB/ActorsParent.cpp | 78 +++++++++++++++++++++++++++------- - dom/indexedDB/IndexedDatabase.h | 4 ++ - dom/indexedDB/IndexedDatabaseInlines.h | 14 ++++++ - 3 files changed, 80 insertions(+), 16 deletions(-) - -diff --git dom/indexedDB/ActorsParent.cpp dom/indexedDB/ActorsParent.cpp -index b9eb1744b8b6..aef19c8379be 100644 ---- dom/indexedDB/ActorsParent.cpp -+++ dom/indexedDB/ActorsParent.cpp -@@ -8173,7 +8173,7 @@ protected: - - // Subclasses use this override to set the IPDL response value. - virtual void -- GetResponse(RequestResponse& aResponse) = 0; -+ GetResponse(RequestResponse& aResponse, size_t* aResponseSize) = 0; - - private: - nsresult -@@ -8237,7 +8237,7 @@ private: - DoDatabaseWork(DatabaseConnection* aConnection) override; - - void -- GetResponse(RequestResponse& aResponse) override; -+ GetResponse(RequestResponse& aResponse, size_t* aResponseSize) override; - - void - Cleanup() override; -@@ -8359,7 +8359,7 @@ private: - GetPreprocessParams(PreprocessParams& aParams) override; - - void -- GetResponse(RequestResponse& aResponse) override; -+ GetResponse(RequestResponse& aResponse, size_t* aResponseSize) override; - }; - - class ObjectStoreGetKeyRequestOp final -@@ -8385,7 +8385,7 @@ private: - DoDatabaseWork(DatabaseConnection* aConnection) override; - - void -- GetResponse(RequestResponse& aResponse) override; -+ GetResponse(RequestResponse& aResponse, size_t* aResponseSize) override; - }; - - class ObjectStoreDeleteRequestOp final -@@ -8407,9 +8407,10 @@ private: - DoDatabaseWork(DatabaseConnection* aConnection) override; - - void -- GetResponse(RequestResponse& aResponse) override -+ GetResponse(RequestResponse& aResponse, size_t* aResponseSize) override - { - aResponse = Move(mResponse); -+ *aResponseSize = 0; - } - }; - -@@ -8432,9 +8433,10 @@ private: - DoDatabaseWork(DatabaseConnection* aConnection) override; - - void -- GetResponse(RequestResponse& aResponse) override -+ GetResponse(RequestResponse& aResponse, size_t* aResponseSize) override - { - aResponse = Move(mResponse); -+ *aResponseSize = 0; - } - }; - -@@ -8459,9 +8461,10 @@ private: - DoDatabaseWork(DatabaseConnection* aConnection) override; - - void -- GetResponse(RequestResponse& aResponse) override -+ GetResponse(RequestResponse& aResponse, size_t* aResponseSize) override - { - aResponse = Move(mResponse); -+ *aResponseSize = sizeof(uint64_t); - } - }; - -@@ -8511,7 +8514,7 @@ private: - DoDatabaseWork(DatabaseConnection* aConnection) override; - - void -- GetResponse(RequestResponse& aResponse) override; -+ GetResponse(RequestResponse& aResponse, size_t* aResponseSize) override; - }; - - class IndexGetKeyRequestOp final -@@ -8536,7 +8539,7 @@ private: - DoDatabaseWork(DatabaseConnection* aConnection) override; - - void -- GetResponse(RequestResponse& aResponse) override; -+ GetResponse(RequestResponse& aResponse, size_t* aResponseSize) override; - }; - - class IndexCountRequestOp final -@@ -8561,9 +8564,10 @@ private: - DoDatabaseWork(DatabaseConnection* aConnection) override; - - void -- GetResponse(RequestResponse& aResponse) override -+ GetResponse(RequestResponse& aResponse, size_t* aResponseSize) override - { - aResponse = Move(mResponse); -+ *aResponseSize = sizeof(uint64_t); - } - }; - -@@ -25726,8 +25730,22 @@ NormalTransactionOp::SendSuccessResult() - AssertIsOnOwningThread(); - - if (!IsActorDestroyed()) { -+ static const size_t kMaxIDBMsgOverhead = 1024 * 1024 * 10; // 10MB -+ const uint32_t maximalSizeFromPref = -+ IndexedDatabaseManager::MaxSerializedMsgSize(); -+ MOZ_ASSERT(maximalSizeFromPref > kMaxIDBMsgOverhead); -+ const size_t kMaxMessageSize = maximalSizeFromPref - kMaxIDBMsgOverhead; -+ - RequestResponse response; -- GetResponse(response); -+ size_t responseSize = kMaxMessageSize; -+ GetResponse(response, &responseSize); -+ -+ if (responseSize >= kMaxMessageSize) { -+ nsPrintfCString("The serialized value is too large" -+ " (size=%zu bytes, max=%zu bytes).", -+ responseSize, kMaxMessageSize); -+ return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR; -+ } - - MOZ_ASSERT(response.type() != RequestResponse::T__None); - -@@ -26387,14 +26405,17 @@ ObjectStoreAddOrPutRequestOp::DoDatabaseWork(DatabaseConnection* aConnection) - } - - void --ObjectStoreAddOrPutRequestOp::GetResponse(RequestResponse& aResponse) -+ObjectStoreAddOrPutRequestOp::GetResponse(RequestResponse& aResponse, -+ size_t* aResponseSize) - { - AssertIsOnOwningThread(); - - if (mOverwrite) { - aResponse = ObjectStorePutResponse(mResponse); -+ *aResponseSize = mResponse.GetBuffer().Length(); - } else { - aResponse = ObjectStoreAddResponse(mResponse); -+ *aResponseSize = mResponse.GetBuffer().Length(); - } - } - -@@ -26688,12 +26709,14 @@ ObjectStoreGetRequestOp::GetPreprocessParams(PreprocessParams& aParams) - } - - void --ObjectStoreGetRequestOp::GetResponse(RequestResponse& aResponse) -+ObjectStoreGetRequestOp::GetResponse(RequestResponse& aResponse, -+ size_t* aResponseSize) - { - MOZ_ASSERT_IF(mLimit, mResponse.Length() <= mLimit); - - if (mGetAll) { - aResponse = ObjectStoreGetAllResponse(); -+ *aResponseSize = 0; - - if (!mResponse.IsEmpty()) { - FallibleTArray fallibleCloneInfos; -@@ -26706,6 +26729,7 @@ ObjectStoreGetRequestOp::GetResponse(RequestResponse& aResponse) - for (uint32_t count = mResponse.Length(), index = 0; - index < count; - index++) { -+ *aResponseSize += mResponse[index].Size(); - nsresult rv = - ConvertResponse(mResponse[index], fallibleCloneInfos[index]); - if (NS_WARN_IF(NS_FAILED(rv))) { -@@ -26724,11 +26748,13 @@ ObjectStoreGetRequestOp::GetResponse(RequestResponse& aResponse) - } - - aResponse = ObjectStoreGetResponse(); -+ *aResponseSize = 0; - - if (!mResponse.IsEmpty()) { - SerializedStructuredCloneReadInfo& serializedInfo = - aResponse.get_ObjectStoreGetResponse().cloneInfo(); - -+ *aResponseSize += mResponse[0].Size(); - nsresult rv = ConvertResponse(mResponse[0], serializedInfo); - if (NS_WARN_IF(NS_FAILED(rv))) { - aResponse = rv; -@@ -26834,25 +26860,33 @@ ObjectStoreGetKeyRequestOp::DoDatabaseWork(DatabaseConnection* aConnection) - } - - void --ObjectStoreGetKeyRequestOp::GetResponse(RequestResponse& aResponse) -+ObjectStoreGetKeyRequestOp::GetResponse(RequestResponse& aResponse, -+ size_t* aResponseSize) - { - MOZ_ASSERT_IF(mLimit, mResponse.Length() <= mLimit); - - if (mGetAll) { - aResponse = ObjectStoreGetAllKeysResponse(); -+ *aResponseSize = 0; - - if (!mResponse.IsEmpty()) { - nsTArray& response = - aResponse.get_ObjectStoreGetAllKeysResponse().keys(); -+ - mResponse.SwapElements(response); -+ for (uint32_t i = 0; i < mResponse.Length(); ++i) { -+ *aResponseSize += mResponse[i].GetBuffer().Length(); -+ } - } - - return; - } - - aResponse = ObjectStoreGetKeyResponse(); -+ *aResponseSize = 0; - - if (!mResponse.IsEmpty()) { -+ *aResponseSize = mResponse[0].GetBuffer().Length(); - aResponse.get_ObjectStoreGetKeyResponse().key() = Move(mResponse[0]); - } - } -@@ -27284,12 +27318,14 @@ IndexGetRequestOp::DoDatabaseWork(DatabaseConnection* aConnection) - } - - void --IndexGetRequestOp::GetResponse(RequestResponse& aResponse) -+IndexGetRequestOp::GetResponse(RequestResponse& aResponse, -+ size_t* aResponseSize) - { - MOZ_ASSERT_IF(!mGetAll, mResponse.Length() <= 1); - - if (mGetAll) { - aResponse = IndexGetAllResponse(); -+ *aResponseSize = 0; - - if (!mResponse.IsEmpty()) { - FallibleTArray fallibleCloneInfos; -@@ -27303,6 +27339,7 @@ IndexGetRequestOp::GetResponse(RequestResponse& aResponse) - index < count; - index++) { - StructuredCloneReadInfo& info = mResponse[index]; -+ *aResponseSize += info.Size(); - - SerializedStructuredCloneReadInfo& serializedInfo = - fallibleCloneInfos[index]; -@@ -27335,9 +27372,11 @@ IndexGetRequestOp::GetResponse(RequestResponse& aResponse) - } - - aResponse = IndexGetResponse(); -+ *aResponseSize = 0; - - if (!mResponse.IsEmpty()) { - StructuredCloneReadInfo& info = mResponse[0]; -+ *aResponseSize += info.Size(); - - SerializedStructuredCloneReadInfo& serializedInfo = - aResponse.get_IndexGetResponse().cloneInfo(); -@@ -27467,23 +27506,30 @@ IndexGetKeyRequestOp::DoDatabaseWork(DatabaseConnection* aConnection) - } - - void --IndexGetKeyRequestOp::GetResponse(RequestResponse& aResponse) -+IndexGetKeyRequestOp::GetResponse(RequestResponse& aResponse, -+ size_t* aResponseSize) - { - MOZ_ASSERT_IF(!mGetAll, mResponse.Length() <= 1); - - if (mGetAll) { - aResponse = IndexGetAllKeysResponse(); -+ *aResponseSize = 0; - - if (!mResponse.IsEmpty()) { - mResponse.SwapElements(aResponse.get_IndexGetAllKeysResponse().keys()); -+ for (uint32_t i = 0; i < mResponse.Length(); ++i) { -+ *aResponseSize += mResponse[i].GetBuffer().Length(); -+ } - } - - return; - } - - aResponse = IndexGetKeyResponse(); -+ *aResponseSize = 0; - - if (!mResponse.IsEmpty()) { -+ *aResponseSize = mResponse[0].GetBuffer().Length(); - aResponse.get_IndexGetKeyResponse().key() = Move(mResponse[0]); - } - } -diff --git dom/indexedDB/IndexedDatabase.h dom/indexedDB/IndexedDatabase.h -index b0c4cb877a9c..9165758bcd62 100644 ---- dom/indexedDB/IndexedDatabase.h -+++ dom/indexedDB/IndexedDatabase.h -@@ -83,6 +83,10 @@ struct StructuredCloneReadInfo - // In IndexedDatabaseInlines.h - inline - MOZ_IMPLICIT StructuredCloneReadInfo(SerializedStructuredCloneReadInfo&& aOther); -+ -+ // In IndexedDatabaseInlines.h -+ inline -+ size_t Size() const; - }; - - } // namespace indexedDB -diff --git dom/indexedDB/IndexedDatabaseInlines.h dom/indexedDB/IndexedDatabaseInlines.h -index 830c2f11009d..48cc4f9b3ced 100644 ---- dom/indexedDB/IndexedDatabaseInlines.h -+++ dom/indexedDB/IndexedDatabaseInlines.h -@@ -99,6 +99,20 @@ StructuredCloneReadInfo::operator=(StructuredCloneReadInfo&& aCloneReadInfo) - return *this; - } - -+inline size_t -+StructuredCloneReadInfo::Size() const -+{ -+ size_t size = mData.Size(); -+ -+ for (uint32_t i = 0, count = mFiles.Length(); i < count; ++i) { -+ // We don't want to calculate the size of files and so on, because are mainly -+ // file descriptors. -+ size += sizeof(uint64_t); -+ } -+ -+ return size; -+} -+ - } // namespace indexedDB - } // namespace dom - } // namespace mozilla diff --git a/www/waterfox/files/patch-bug1288587 b/www/waterfox/files/patch-bug1288587 deleted file mode 100644 index e10ef8537a4a..000000000000 --- a/www/waterfox/files/patch-bug1288587 +++ /dev/null @@ -1,67 +0,0 @@ -diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure -index 855214a..1e91d51 100644 ---- build/moz.configure/init.configure -+++ build/moz.configure/init.configure -@@ -165,16 +165,17 @@ option(env='PYTHON', nargs=1, help='Python interpreter') - # ============================================================== - @depends('PYTHON', check_build_environment, mozconfig, '--help') - @imports('os') - @imports('sys') - @imports('subprocess') - @imports(_from='mozbuild.configure.util', _import='LineIO') - @imports(_from='mozbuild.virtualenv', _import='VirtualenvManager') - @imports(_from='mozbuild.virtualenv', _import='verify_python_version') -+@imports(_from='__builtin__', _import='KeyError') - @imports('distutils.sysconfig') - def virtualenv_python(env_python, build_env, mozconfig, help): - if help: - return - - python = env_python[0] if env_python else None - - # Ideally we'd rely on the mozconfig injection from mozconfig_options, -@@ -184,16 +185,22 @@ def virtualenv_python(env_python, build_env, mozconfig, help): - if 'PYTHON' in mozconfig['env']['added']: - python = mozconfig['env']['added']['PYTHON'] - elif 'PYTHON' in mozconfig['env']['modified']: - python = mozconfig['env']['modified']['PYTHON'][1] - elif 'PYTHON' in mozconfig['vars']['added']: - python = mozconfig['vars']['added']['PYTHON'] - elif 'PYTHON' in mozconfig['vars']['modified']: - python = mozconfig['vars']['modified']['PYTHON'][1] -+ for i in ('env', 'vars'): -+ for j in ('added', 'modified'): -+ try: -+ del mozconfig[i][j]['PYTHON'] -+ except KeyError: -+ pass - - with LineIO(lambda l: log.error(l)) as out: - verify_python_version(out) - topsrcdir, topobjdir = build_env.topsrcdir, build_env.topobjdir - if topobjdir.endswith('/js/src'): - topobjdir = topobjdir[:-7] - - with LineIO(lambda l: log.info(l)) as out: -@@ -219,17 +226,20 @@ def virtualenv_python(env_python, build_env, mozconfig, help): - log.info('Creating Python environment') - manager.build(python) - - python = normsep(manager.python_path) - - if python != normsep(sys.executable): - log.info('Reexecuting in the virtualenv') - if env_python: -- del os.environ['PYTHON'] -+ try: -+ del os.environ['PYTHON'] -+ except KeyError: -+ pass - # One would prefer to use os.execl, but that's completely borked on - # Windows. - sys.exit(subprocess.call([python] + sys.argv)) - - # We are now in the virtualenv - if not distutils.sysconfig.get_python_lib(): - die('Could not determine python site packages directory') - diff --git a/www/waterfox/files/patch-bug1321069 b/www/waterfox/files/patch-bug1321069 deleted file mode 100644 index 646e530562d3..000000000000 --- a/www/waterfox/files/patch-bug1321069 +++ /dev/null @@ -1,100 +0,0 @@ -commit a09c25bcc3b4 -Author: Kartikaya Gupta -Date: Wed May 30 09:49:23 2018 -0400 - - Bug 1321069 - Redirect the end event of a long-tap sequence back to the content window. r=karlt, a=RyanVM - - In the case of a long-tap touch sequence, a new popup window (the - contextmenu) is spawned while the sequence is ongoing. The touch-end of - the sequence ends up getting delivered to the popup window, instead of - the original content window, and that causes the touch-handling - machinery state in the content window to get out of sync with reality. - This patch detects this scenario and redirects the touch events on the - popup window back to the original content window. - - MozReview-Commit-ID: L2vvKLlogRA - - --HG-- - extra : source : 27a160b7025ffaadd7cc1ce326ce8729c2b180a0 ---- - widget/gtk/nsWindow.cpp | 36 +++++++++++++++++++++++++++++++++++- - widget/gtk/nsWindow.h | 3 +++ - 2 files changed, 38 insertions(+), 1 deletion(-) - -diff --git widget/gtk/nsWindow.cpp widget/gtk/nsWindow.cpp -index 54ec8615051f1..18d0ccac4dbd6 100644 ---- widget/gtk/nsWindow.cpp -+++ widget/gtk/nsWindow.cpp -@@ -3455,11 +3455,41 @@ nsWindow::OnDragDataReceivedEvent(GtkWidget *aWidget, - aSelectionData, aInfo, aTime); - } - -+nsWindow* -+nsWindow::GetTransientForWindowIfPopup() -+{ -+ if (mWindowType != eWindowType_popup) { -+ return nullptr; -+ } -+ GtkWindow* toplevel = gtk_window_get_transient_for(GTK_WINDOW(mShell)); -+ if (toplevel) { -+ return get_window_for_gtk_widget(GTK_WIDGET(toplevel)); -+ } -+ return nullptr; -+} -+ -+bool -+nsWindow::IsHandlingTouchSequence(GdkEventSequence* aSequence) -+{ -+ return mHandleTouchEvent && mTouches.Contains(aSequence); -+} -+ - #if GTK_CHECK_VERSION(3,4,0) - gboolean - nsWindow::OnTouchEvent(GdkEventTouch* aEvent) - { - if (!mHandleTouchEvent) { -+ // If a popup window was spawned (e.g. as the result of a long-press) -+ // and touch events got diverted to that window within a touch sequence, -+ // ensure the touch event gets sent to the original window instead. We -+ // keep the checks here very conservative so that we only redirect -+ // events in this specific scenario. -+ nsWindow* targetWindow = GetTransientForWindowIfPopup(); -+ if (targetWindow && -+ targetWindow->IsHandlingTouchSequence(aEvent->sequence)) { -+ return targetWindow->OnTouchEvent(aEvent); -+ } -+ - return FALSE; - } - -@@ -4780,12 +4810,16 @@ nsWindow::GrabPointer(guint32 aTime) - return; - - gint retval; -+ // Note that we need GDK_TOUCH_MASK below to work around a GDK/X11 bug that -+ // causes touch events that would normally be received by this client on -+ // other windows to be discarded during the grab. - retval = gdk_pointer_grab(mGdkWindow, TRUE, - (GdkEventMask)(GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_ENTER_NOTIFY_MASK | - GDK_LEAVE_NOTIFY_MASK | -- GDK_POINTER_MOTION_MASK), -+ GDK_POINTER_MOTION_MASK | -+ GDK_TOUCH_MASK), - (GdkWindow *)nullptr, nullptr, aTime); - - if (retval == GDK_GRAB_NOT_VIEWABLE) { -diff --git widget/gtk/nsWindow.h widget/gtk/nsWindow.h -index c28c1749c76dc..33e8c4db7c1c0 100644 ---- widget/gtk/nsWindow.h -+++ widget/gtk/nsWindow.h -@@ -434,6 +434,8 @@ private: - nsIWidgetListener* GetListener(); - bool IsComposited() const; - -+ nsWindow* GetTransientForWindowIfPopup(); -+ bool IsHandlingTouchSequence(GdkEventSequence* aSequence); - - GtkWidget *mShell; - MozContainer *mContainer; diff --git a/www/waterfox/files/patch-bug1321960 b/www/waterfox/files/patch-bug1321960 deleted file mode 100644 index 410894bfbadb..000000000000 --- a/www/waterfox/files/patch-bug1321960 +++ /dev/null @@ -1,134 +0,0 @@ -commit 8721b8f42bc0 -Author: Alexander Surkov -Date: Tue Sep 26 16:25:12 2017 -0400 - - Bug 1321960 - Rename nsIPresShell::mSuppressInterruptibleReflows to mWasLastReflowInterrupted to reflect better its purpose. r=dholbert, a=sledru - - --HG-- - extra : source : c65fce03b9e0a1a7591668f727b846675cffa44a ---- - layout/base/PresShell.cpp | 8 ++++---- - layout/base/nsIPresShell.h | 18 +++++++++++++++++- - layout/base/nsRefreshDriver.cpp | 2 +- - 3 files changed, 22 insertions(+), 6 deletions(-) - -diff --git layout/base/PresShell.cpp layout/base/PresShell.cpp -index 4ca35ffe1466..a1660ac30de7 100644 ---- layout/base/PresShell.cpp -+++ layout/base/PresShell.cpp -@@ -762,7 +762,7 @@ nsIPresShell::nsIPresShell() - , mFrozen(false) - , mIsFirstPaint(false) - , mObservesMutationsForPrint(false) -- , mSuppressInterruptibleReflows(false) -+ , mWasLastReflowInterrupted(false) - , mScrollPositionClampingScrollPortSizeSet(false) - , mNeedLayoutFlush(true) - , mNeedStyleFlush(true) -@@ -4197,7 +4197,7 @@ PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush aFlush) - // worry about them. They can't be triggered during reflow, so we should - // be good. - -- if (flushType >= (mSuppressInterruptibleReflows -+ if (flushType >= (SuppressInterruptibleReflows() - ? FlushType::Layout - : FlushType::InterruptibleLayout) && - !mIsDestroying) { -@@ -4232,7 +4232,7 @@ PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush aFlush) - if (!didLayoutFlush && flushType >= FlushType::InterruptibleLayout && - !mIsDestroying) { - // We suppressed this flush either due to it not being safe to flush, -- // or due to mSuppressInterruptibleReflows. Either way, the -+ // or due to SuppressInterruptibleReflows(). Either way, the - // mNeedLayoutFlush flag needs to be re-set. - SetNeedLayoutFlush(); - } -@@ -9484,7 +9484,7 @@ PresShell::DoReflow(nsIFrame* target, bool aInterruptible) - // Any FlushPendingNotifications with interruptible reflows - // should be suppressed now. We don't want to do extra reflow work - // before our reflow event happens. -- mSuppressInterruptibleReflows = true; -+ mWasLastReflowInterrupted = true; - MaybeScheduleReflow(); - } - -diff --git layout/base/nsIPresShell.h layout/base/nsIPresShell.h -index 9f65bad1b4d7..885bc0bc699a 100644 ---- layout/base/nsIPresShell.h -+++ layout/base/nsIPresShell.h -@@ -1581,6 +1581,21 @@ public: - mFontSizeInflationEnabledIsDirty = true; - } - -+ /** -+ * Return true if the most recent interruptible reflow was interrupted. -+ */ -+ bool IsReflowInterrupted() const { -+ return mWasLastReflowInterrupted; -+ } -+ -+ /** -+ * Return true if the the interruptible reflows have to be suppressed. -+ * This may happen only if if the most recent reflow was interrupted. -+ */ -+ bool SuppressInterruptibleReflows() const { -+ return mWasLastReflowInterrupted; -+ } -+ - ////////////////////////////////////////////////////////////////////////////// - // Approximate frame visibility tracking public API. - ////////////////////////////////////////////////////////////////////////////// -@@ -1794,7 +1809,8 @@ protected: - bool mIsFirstPaint : 1; - bool mObservesMutationsForPrint : 1; - -- bool mSuppressInterruptibleReflows : 1; -+ // Whether the most recent interruptible reflow was actually interrupted: -+ bool mWasLastReflowInterrupted : 1; - bool mScrollPositionClampingScrollPortSizeSet : 1; - - // True if a layout flush might not be a no-op -diff --git layout/base/nsRefreshDriver.cpp layout/base/nsRefreshDriver.cpp -index 4dbe56952ccf..4ca4783561c6 100644 ---- layout/base/nsRefreshDriver.cpp -+++ layout/base/nsRefreshDriver.cpp -@@ -1949,7 +1949,7 @@ nsRefreshDriver::Tick(int64_t aNowEpoch, TimeStamp aNowTime) - - nsCOMPtr shellKungFuDeathGrip(shell); - shell->mObservingLayoutFlushes = false; -- shell->mSuppressInterruptibleReflows = false; -+ shell->mWasLastReflowInterrupted = false; - FlushType flushType = HasPendingAnimations(shell) - ? FlushType::Layout - : FlushType::InterruptibleLayout; -commit 5ee10fd6f2e4 -Author: Alexander Surkov -Date: Tue Sep 26 16:27:02 2017 -0400 - - Bug 1321960 - Let an interrupted reflow finish before processing a11y. r=eeejay, f=dholbert, a=sledru - - --HG-- - extra : source : c845865489652eadaa3f9a12736c1db56c0e6f12 ---- - accessible/base/NotificationController.cpp | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git accessible/base/NotificationController.cpp accessible/base/NotificationController.cpp -index d08500458221..8263c7b54d83 100644 ---- accessible/base/NotificationController.cpp -+++ accessible/base/NotificationController.cpp -@@ -601,9 +601,13 @@ NotificationController::WillRefresh(mozilla::TimeStamp aTime) - if (!mDocument) - return; - -+ // Wait until an update, we have started, or an interruptible reflow is -+ // finished. - if (mObservingState == eRefreshProcessing || -- mObservingState == eRefreshProcessingForUpdate) -+ mObservingState == eRefreshProcessingForUpdate || -+ mPresShell->IsReflowInterrupted()) { - return; -+ } - - // Any generic notifications should be queued if we're processing content - // insertions or generic notifications. diff --git a/www/waterfox/files/patch-bug1324042 b/www/waterfox/files/patch-bug1324042 deleted file mode 100644 index d9edf5e153b5..000000000000 --- a/www/waterfox/files/patch-bug1324042 +++ /dev/null @@ -1,33 +0,0 @@ -commit ac0f7d653b1e -Author: Daniel Holbert -Date: Sat Feb 10 08:46:49 2018 -0800 - - Bug 1324042: Fix trimmedOffsets arithmetic in GetRenderedText(). r=mats a=abillings - - MozReview-Commit-ID: H4ngU8Juyln - - --HG-- - extra : source : fbf54020043bd09c162530907b2a1091a10f4f92 ---- - layout/generic/nsTextFrame.cpp | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git layout/generic/nsTextFrame.cpp layout/generic/nsTextFrame.cpp -index 42891e960eea..f8b49e4d07cf 100644 ---- layout/generic/nsTextFrame.cpp -+++ layout/generic/nsTextFrame.cpp -@@ -10116,9 +10116,13 @@ nsTextFrame::GetRenderedText(uint32_t aStartOffset, - startOffset = aStartOffset; - endOffset = std::min(INT32_MAX, aEndOffset); - } -+ -+ // If startOffset and/or endOffset are inside of trimmedOffsets' range, -+ // then clamp the edges of trimmedOffsets accordingly. -+ int32_t origTrimmedOffsetsEnd = trimmedOffsets.GetEnd(); - trimmedOffsets.mStart = std::max(trimmedOffsets.mStart, - startOffset); -- trimmedOffsets.mLength = std::min(trimmedOffsets.GetEnd(), -+ trimmedOffsets.mLength = std::min(origTrimmedOffsetsEnd, - endOffset) - trimmedOffsets.mStart; - if (trimmedOffsets.mLength <= 0) { - offsetInRenderedString = nextOffsetInRenderedString; diff --git a/www/waterfox/files/patch-bug1325888 b/www/waterfox/files/patch-bug1325888 deleted file mode 100644 index 39cff975859d..000000000000 --- a/www/waterfox/files/patch-bug1325888 +++ /dev/null @@ -1,39 +0,0 @@ -commit fb631be6ce75 -Author: DimiL -Date: Wed Nov 1 08:40:00 2017 +0800 - - Bug 1325888 - Clear cached completion result when close safebrowsing database. r=francois - - Safebrowsing testcase will close and then re-open database to simulate firefox restart. - This bug happened when DB service already has a previously cached completion result and then - re-open database. In this scenario, if testcase triggers another the same completion request, - we won't cache it because we thought we have it already (See nsUrlClassifierDBServiceWorker::CacheCompletion). - - This causes a testcase assertion when testcase expects the completion - result should be stored in LookupCache. - - MozReview-Commit-ID: 8o57jHv92OH - - --HG-- - extra : rebase_source : 90861060437d6cef860b85dd669d76e74ceec660 ---- - toolkit/components/url-classifier/nsUrlClassifierDBService.cpp | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git toolkit/components/url-classifier/nsUrlClassifierDBService.cpp toolkit/components/url-classifier/nsUrlClassifierDBService.cpp -index e1a1be065aaf..a108812a1792 100644 ---- toolkit/components/url-classifier/nsUrlClassifierDBService.cpp -+++ toolkit/components/url-classifier/nsUrlClassifierDBService.cpp -@@ -812,6 +812,12 @@ nsUrlClassifierDBServiceWorker::CloseDb() - mClassifier = nullptr; - } - -+ // Clear last completion result when close db so we will still cache completion -+ // result next time we re-open it. -+ if (mLastResults) { -+ mLastResults->Clear(); -+ } -+ - LOG(("urlclassifier db closed\n")); - - return NS_OK; diff --git a/www/waterfox/files/patch-bug1331209 b/www/waterfox/files/patch-bug1331209 deleted file mode 100644 index e210d467a5e6..000000000000 --- a/www/waterfox/files/patch-bug1331209 +++ /dev/null @@ -1,571 +0,0 @@ -commit b7088851d6e8 -Author: Jan Varga -Date: Sat Nov 4 23:13:20 2017 +0100 - - Bug 1331209 - Part 2: Fix incorrect FailOnNonOwningThread() calls; r=asuth ---- - dom/asmjscache/AsmJSCache.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git dom/asmjscache/AsmJSCache.cpp dom/asmjscache/AsmJSCache.cpp -index 227bf80f2ac4..ec1e3531fb4f 100644 ---- dom/asmjscache/AsmJSCache.cpp -+++ dom/asmjscache/AsmJSCache.cpp -@@ -560,13 +560,13 @@ private: - // If shutdown just started, the QuotaManager may have been deleted. - QuotaManager* qm = QuotaManager::Get(); - if (!qm) { -- FailOnNonOwningThread(); -+ Fail(); - return; - } - - nsresult rv = qm->IOThread()->Dispatch(this, NS_DISPATCH_NORMAL); - if (NS_FAILED(rv)) { -- FailOnNonOwningThread(); -+ Fail(); - return; - } - } - -commit ea39dafe977a -Author: Jan Varga -Date: Sat Nov 4 23:13:41 2017 +0100 - - Bug 1331209 - Part 3: Allow sending of the __delete__ message in one direction only; r=asuth ---- - dom/asmjscache/AsmJSCache.cpp | 141 +++++++++++++++++++++++------------ - dom/asmjscache/PAsmJSCacheEntry.ipdl | 20 ++++- - 2 files changed, 111 insertions(+), 50 deletions(-) - -diff --git dom/asmjscache/AsmJSCache.cpp dom/asmjscache/AsmJSCache.cpp -index ec1e3531fb4f..2216149cd762 100644 ---- dom/asmjscache/AsmJSCache.cpp -+++ dom/asmjscache/AsmJSCache.cpp -@@ -445,7 +445,6 @@ public: - mWriteParams(aWriteParams), - mState(eInitial), - mResult(JS::AsmJSCache_InternalError), -- mDeleteReceived(false), - mActorDestroyed(false), - mOpened(false) - { -@@ -493,12 +492,17 @@ private: - { - AssertIsOnOwningThread(); - MOZ_ASSERT(mState == eOpened); -+ MOZ_ASSERT(mResult == JS::AsmJSCache_Success); - - mState = eFinished; - - MOZ_ASSERT(mOpened); - - FinishOnOwningThread(); -+ -+ if (!mActorDestroyed) { -+ Unused << Send__delete__(this, mResult); -+ } - } - - // This method is called upon any failure that prevents the eventual opening -@@ -508,6 +512,7 @@ private: - { - AssertIsOnOwningThread(); - MOZ_ASSERT(mState != eFinished); -+ MOZ_ASSERT(mResult != JS::AsmJSCache_Success); - - mState = eFinished; - -@@ -515,7 +520,7 @@ private: - - FinishOnOwningThread(); - -- if (!mDeleteReceived && !mActorDestroyed) { -+ if (!mActorDestroyed) { - Unused << Send__delete__(this, mResult); - } - } -@@ -579,26 +584,6 @@ private: - DirectoryLockFailed() override; - - // IPDL methods. -- mozilla::ipc::IPCResult -- Recv__delete__(const JS::AsmJSCacheResult& aResult) override -- { -- AssertIsOnOwningThread(); -- MOZ_ASSERT(mState != eFinished); -- MOZ_ASSERT(!mDeleteReceived); -- -- mDeleteReceived = true; -- -- if (mOpened) { -- Close(); -- } else { -- Fail(); -- } -- -- MOZ_ASSERT(mState == eFinished); -- -- return IPC_OK(); -- } -- - void - ActorDestroy(ActorDestroyReason why) override - { -@@ -624,17 +609,59 @@ private: - } - - mozilla::ipc::IPCResult -- RecvSelectCacheFileToRead(const uint32_t& aModuleIndex) override -+ RecvSelectCacheFileToRead(const OpenMetadataForReadResponse& aResponse) -+ override - { - AssertIsOnOwningThread(); - MOZ_ASSERT(mState == eWaitingToOpenCacheFileForRead); - MOZ_ASSERT(mOpenMode == eOpenForRead); -+ MOZ_ASSERT(!mOpened); -+ -+ switch (aResponse.type()) { -+ case OpenMetadataForReadResponse::TAsmJSCacheResult: { -+ MOZ_ASSERT(aResponse.get_AsmJSCacheResult() != JS::AsmJSCache_Success); -+ -+ mResult = aResponse.get_AsmJSCacheResult(); -+ -+ // This ParentRunnable can only be held alive by the IPDL. Fail() -+ // clears that last reference. So we need to add a self reference here. -+ RefPtr kungFuDeathGrip = this; -+ -+ Fail(); -+ -+ break; -+ } -+ -+ case OpenMetadataForReadResponse::Tuint32_t: -+ // A cache entry has been selected to open. -+ mModuleIndex = aResponse.get_uint32_t(); -+ -+ mState = eReadyToOpenCacheFileForRead; -+ -+ DispatchToIOThread(); -+ -+ break; - -- // A cache entry has been selected to open. -+ default: -+ MOZ_CRASH("Should never get here!"); -+ } -+ -+ return IPC_OK(); -+ } -+ -+ mozilla::ipc::IPCResult -+ RecvClose() override -+ { -+ AssertIsOnOwningThread(); -+ MOZ_ASSERT(mState == eOpened); - -- mModuleIndex = aModuleIndex; -- mState = eReadyToOpenCacheFileForRead; -- DispatchToIOThread(); -+ // This ParentRunnable can only be held alive by the IPDL. Close() clears -+ // that last reference. So we need to add a self reference here. -+ RefPtr kungFuDeathGrip = this; -+ -+ Close(); -+ -+ MOZ_ASSERT(mState == eFinished); - - return IPC_OK(); - } -@@ -675,7 +702,6 @@ private: - State mState; - JS::AsmJSCacheResult mResult; - -- bool mDeleteReceived; - bool mActorDestroyed; - bool mOpened; - }; -@@ -1021,10 +1047,6 @@ ParentRunnable::Run() - - mState = eOpened; - -- // The entry is now open. -- MOZ_ASSERT(!mOpened); -- mOpened = true; -- - FileDescriptor::PlatformHandleType handle = - FileDescriptor::PlatformHandleType(PR_FileDesc2NativeHandle(mFileDesc)); - if (!SendOnOpenCacheFile(mFileSize, FileDescriptor(handle))) { -@@ -1032,6 +1054,12 @@ ParentRunnable::Run() - return NS_OK; - } - -+ // The entry is now open. -+ MOZ_ASSERT(!mOpened); -+ mOpened = true; -+ -+ mResult = JS::AsmJSCache_Success; -+ - return NS_OK; - } - -@@ -1291,15 +1319,16 @@ private: - MOZ_ASSERT(mState == eOpening); - - uint32_t moduleIndex; -- if (!FindHashMatch(aMetadata, mReadParams, &moduleIndex)) { -- Fail(JS::AsmJSCache_InternalError); -- Send__delete__(this, JS::AsmJSCache_InternalError); -- return IPC_OK(); -+ bool ok; -+ if (FindHashMatch(aMetadata, mReadParams, &moduleIndex)) { -+ ok = SendSelectCacheFileToRead(moduleIndex); -+ } else { -+ ok = SendSelectCacheFileToRead(JS::AsmJSCache_InternalError); - } -- -- if (!SendSelectCacheFileToRead(moduleIndex)) { -+ if (!ok) { - return IPC_FAIL_NO_REASON(this); - } -+ - return IPC_OK(); - } - -@@ -1327,9 +1356,20 @@ private: - Recv__delete__(const JS::AsmJSCacheResult& aResult) override - { - MOZ_ASSERT(NS_IsMainThread()); -- MOZ_ASSERT(mState == eOpening); -+ MOZ_ASSERT(mState == eOpening || mState == eFinishing); -+ MOZ_ASSERT_IF(mState == eOpening, aResult != JS::AsmJSCache_Success); -+ MOZ_ASSERT_IF(mState == eFinishing, aResult == JS::AsmJSCache_Success); - -- Fail(aResult); -+ if (mState == eOpening) { -+ Fail(aResult); -+ } else { -+ // Match the AddRef in BlockUntilOpen(). The IPDL still holds an -+ // outstanding ref which will keep 'this' alive until ActorDestroy() -+ // is executed. -+ Release(); -+ -+ mState = eFinished; -+ } - return IPC_OK(); - } - -@@ -1395,6 +1435,7 @@ private: - eOpening, // Waiting for the parent process to respond - eOpened, // Parent process opened the entry and sent it back - eClosing, // Waiting to be dispatched to the main thread to Send__delete__ -+ eFinishing, // Waiting for the parent process to close - eFinished // Terminal state - }; - State mState; -@@ -1454,28 +1495,32 @@ ChildRunnable::Run() - - // Per FileDescriptorHolder::Finish()'s comment, call before - // releasing the directory lock (which happens in the parent upon receipt -- // of the Send__delete__ message). -+ // of the Close message). - FileDescriptorHolder::Finish(); - - MOZ_ASSERT(mOpened); - mOpened = false; - -- // Match the AddRef in BlockUntilOpen(). The main thread event loop still -- // holds an outstanding ref which will keep 'this' alive until returning to -- // the event loop. -- Release(); -+ if (mActorDestroyed) { -+ // Match the AddRef in BlockUntilOpen(). The main thread event loop -+ // still holds an outstanding ref which will keep 'this' alive until -+ // returning to the event loop. -+ Release(); - -- if (!mActorDestroyed) { -- Unused << Send__delete__(this, JS::AsmJSCache_Success); -+ mState = eFinished; -+ } else { -+ Unused << SendClose(); -+ -+ mState = eFinishing; - } - -- mState = eFinished; - return NS_OK; - } - - case eBackgroundChildPending: - case eOpening: - case eOpened: -+ case eFinishing: - case eFinished: { - MOZ_MAKE_COMPILER_ASSUME_IS_UNREACHABLE("Shouldn't Run() in this state"); - } -diff --git dom/asmjscache/PAsmJSCacheEntry.ipdl dom/asmjscache/PAsmJSCacheEntry.ipdl -index d16c9284ff9d..bb88a25b5615 100644 ---- dom/asmjscache/PAsmJSCacheEntry.ipdl -+++ dom/asmjscache/PAsmJSCacheEntry.ipdl -@@ -11,6 +11,12 @@ namespace mozilla { - namespace dom { - namespace asmjscache { - -+union OpenMetadataForReadResponse -+{ -+ AsmJSCacheResult; -+ uint32_t; -+}; -+ - protocol PAsmJSCacheEntry - { - manager PBackground; -@@ -21,14 +27,24 @@ protocol PAsmJSCacheEntry - child: - async OnOpenMetadataForRead(Metadata metadata); - parent: -- async SelectCacheFileToRead(uint32_t moduleIndex); -+ async SelectCacheFileToRead(OpenMetadataForReadResponse response); - - child: - // Once the cache file has been opened, the child is notified and sent an - // open file descriptor. - async OnOpenCacheFile(int64_t fileSize, FileDescriptor fileDesc); - --both: -+parent: -+ // When the child process is done with the cache entry, the parent process -+ // is notified (via Close). -+ async Close(); -+ -+child: -+ // When there's an error during the opening phase, the child process is -+ // notified (via __delete__) and sent an error result. -+ // When the parent process receives the Close message, it closes the cache -+ // entry on the parent side and the child is notified (via __delete__). -+ // The protocol is destroyed in both cases. - async __delete__(AsmJSCacheResult result); - }; - - -commit 04d80fd8932a -Author: Jan Varga -Date: Sat Nov 4 23:13:51 2017 +0100 - - Bug 1331209 - Part 4: Prevent the state machine from continuing if QM is shutting down or the actor has been destroyed; r=asuth ---- - dom/asmjscache/AsmJSCache.cpp | 97 +++++++++++++++++++++++++++++++++++++------ - 1 file changed, 84 insertions(+), 13 deletions(-) - -diff --git dom/asmjscache/AsmJSCache.cpp dom/asmjscache/AsmJSCache.cpp -index 2216149cd762..7c96bc71ac0a 100644 ---- dom/asmjscache/AsmJSCache.cpp -+++ dom/asmjscache/AsmJSCache.cpp -@@ -443,6 +443,7 @@ public: - mPrincipalInfo(aPrincipalInfo), - mOpenMode(aOpenMode), - mWriteParams(aWriteParams), -+ mOperationMayProceed(true), - mState(eInitial), - mResult(JS::AsmJSCache_InternalError), - mActorDestroyed(false), -@@ -485,6 +486,22 @@ private: - MOZ_ASSERT(!IsOnOwningThread()); - } - -+ bool -+ IsActorDestroyed() const -+ { -+ AssertIsOnOwningThread(); -+ -+ return mActorDestroyed; -+ } -+ -+ // May be called on any thread, but you should call IsActorDestroyed() if -+ // you know you're on the background thread because it is slightly faster. -+ bool -+ OperationMayProceed() const -+ { -+ return mOperationMayProceed; -+ } -+ - // This method is called on the owning thread when the JS engine is finished - // reading/writing the cache entry. - void -@@ -497,6 +514,7 @@ private: - mState = eFinished; - - MOZ_ASSERT(mOpened); -+ mOpened = false; - - FinishOnOwningThread(); - -@@ -562,13 +580,15 @@ private: - { - AssertIsOnOwningThread(); - -- // If shutdown just started, the QuotaManager may have been deleted. -- QuotaManager* qm = QuotaManager::Get(); -- if (!qm) { -+ if (NS_WARN_IF(Client::IsShuttingDownOnBackgroundThread()) || -+ IsActorDestroyed()) { - Fail(); - return; - } - -+ QuotaManager* qm = QuotaManager::Get(); -+ MOZ_ASSERT(qm); -+ - nsresult rv = qm->IOThread()->Dispatch(this, NS_DISPATCH_NORMAL); - if (NS_FAILED(rv)) { - Fail(); -@@ -589,23 +609,30 @@ private: - { - AssertIsOnOwningThread(); - MOZ_ASSERT(!mActorDestroyed); -+ MOZ_ASSERT(mOperationMayProceed); - - mActorDestroyed = true; -+ mOperationMayProceed = false; - -- // Assume ActorDestroy can happen at any time, so probe the current state to -- // determine what needs to happen. -- -- if (mState == eFinished) { -- return; -- } -+ // Assume ActorDestroy can happen at any time, so we can't probe the -+ // current state since mState can be modified on any thread (only one -+ // thread at a time based on the state machine). -+ // However we can use mOpened which is only touched on the owning thread. -+ // If mOpened is true, we can also modify mState since we are guaranteed -+ // that there are no pending runnables which would probe mState to decide -+ // what code needs to run (there shouldn't be any running runnables on -+ // other threads either). - - if (mOpened) { - Close(); -- } else { -- Fail(); -+ -+ MOZ_ASSERT(mState == eFinished); - } - -- MOZ_ASSERT(mState == eFinished); -+ // We don't have to call Fail() if mOpened is not true since it means that -+ // either nothing has been initialized yet, so nothing to cleanup or there -+ // are pending runnables that will detect that the actor has been destroyed -+ // and call Fail(). - } - - mozilla::ipc::IPCResult -@@ -617,6 +644,11 @@ private: - MOZ_ASSERT(mOpenMode == eOpenForRead); - MOZ_ASSERT(!mOpened); - -+ if (NS_WARN_IF(Client::IsShuttingDownOnBackgroundThread())) { -+ Fail(); -+ return IPC_OK(); -+ } -+ - switch (aResponse.type()) { - case OpenMetadataForReadResponse::TAsmJSCacheResult: { - MOZ_ASSERT(aResponse.get_AsmJSCacheResult() != JS::AsmJSCache_Success); -@@ -682,6 +714,8 @@ private: - nsCOMPtr mMetadataFile; - Metadata mMetadata; - -+ Atomic mOperationMayProceed; -+ - // State initialized during eWaitingToOpenCacheFileForRead - unsigned mModuleIndex; - -@@ -942,6 +976,12 @@ ParentRunnable::Run() - case eInitial: { - MOZ_ASSERT(NS_IsMainThread()); - -+ if (NS_WARN_IF(Client::IsShuttingDownOnNonBackgroundThread()) || -+ !OperationMayProceed()) { -+ FailOnNonOwningThread(); -+ return NS_OK; -+ } -+ - rv = InitOnMainThread(); - if (NS_FAILED(rv)) { - FailOnNonOwningThread(); -@@ -957,7 +997,8 @@ ParentRunnable::Run() - case eWaitingToFinishInit: { - AssertIsOnOwningThread(); - -- if (QuotaManager::IsShuttingDown()) { -+ if (NS_WARN_IF(Client::IsShuttingDownOnBackgroundThread()) || -+ IsActorDestroyed()) { - Fail(); - return NS_OK; - } -@@ -976,6 +1017,12 @@ ParentRunnable::Run() - case eWaitingToOpenDirectory: { - AssertIsOnOwningThread(); - -+ if (NS_WARN_IF(Client::IsShuttingDownOnBackgroundThread()) || -+ IsActorDestroyed()) { -+ Fail(); -+ return NS_OK; -+ } -+ - if (NS_WARN_IF(!QuotaManager::Get())) { - Fail(); - return NS_OK; -@@ -988,6 +1035,12 @@ ParentRunnable::Run() - case eReadyToReadMetadata: { - AssertIsOnIOThread(); - -+ if (NS_WARN_IF(Client::IsShuttingDownOnNonBackgroundThread()) || -+ !OperationMayProceed()) { -+ FailOnNonOwningThread(); -+ return NS_OK; -+ } -+ - rv = ReadMetadata(); - if (NS_FAILED(rv)) { - FailOnNonOwningThread(); -@@ -1016,6 +1069,12 @@ ParentRunnable::Run() - AssertIsOnOwningThread(); - MOZ_ASSERT(mOpenMode == eOpenForRead); - -+ if (NS_WARN_IF(Client::IsShuttingDownOnBackgroundThread()) || -+ IsActorDestroyed()) { -+ Fail(); -+ return NS_OK; -+ } -+ - mState = eWaitingToOpenCacheFileForRead; - - // Metadata is now open. -@@ -1031,6 +1090,12 @@ ParentRunnable::Run() - AssertIsOnIOThread(); - MOZ_ASSERT(mOpenMode == eOpenForRead); - -+ if (NS_WARN_IF(Client::IsShuttingDownOnNonBackgroundThread()) || -+ !OperationMayProceed()) { -+ FailOnNonOwningThread(); -+ return NS_OK; -+ } -+ - rv = OpenCacheFileForRead(); - if (NS_FAILED(rv)) { - FailOnNonOwningThread(); -@@ -1045,6 +1110,12 @@ ParentRunnable::Run() - case eSendingCacheFile: { - AssertIsOnOwningThread(); - -+ if (NS_WARN_IF(Client::IsShuttingDownOnBackgroundThread()) || -+ IsActorDestroyed()) { -+ Fail(); -+ return NS_OK; -+ } -+ - mState = eOpened; - - FileDescriptor::PlatformHandleType handle = diff --git a/www/waterfox/files/patch-bug1334465 b/www/waterfox/files/patch-bug1334465 deleted file mode 100644 index 9a5220b13475..000000000000 --- a/www/waterfox/files/patch-bug1334465 +++ /dev/null @@ -1,62 +0,0 @@ -commit 646f99465e4f -Author: Valentin Gosu -Date: Fri Feb 9 13:20:04 2018 +0100 - - Bug 1334465 - Make HttpChannelParent::mIPCClosed atomic r=bagder a=ritu - - MozReview-Commit-ID: 6irCJMAjzjW - - --HG-- - extra : source : bd315ae86709c3459a3dbf0778022ff3b1908723 ---- - netwerk/protocol/http/HttpChannelParent.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git netwerk/protocol/http/HttpChannelParent.h netwerk/protocol/http/HttpChannelParent.h -index 572d7f177d7a..ef4dbd84f792 100644 ---- netwerk/protocol/http/HttpChannelParent.h -+++ netwerk/protocol/http/HttpChannelParent.h -@@ -264,7 +264,7 @@ private: - RefPtr mChannel; - nsCOMPtr mCacheEntry; - nsCOMPtr mAssociatedContentSecurity; -- bool mIPCClosed; // PHttpChannel actor has been Closed() -+ Atomic mIPCClosed; // PHttpChannel actor has been Closed() - - nsCOMPtr mRedirectChannel; - nsCOMPtr mRedirectCallback; -commit a87603550115 -Author: Valentin Gosu -Date: Sun Feb 11 03:51:09 2018 +0100 - - Bug 1334465 - Set mIPCClosed to true before calling SendDeleteSelf in order to avoid race r=bagder a=ritu - - In the previous code, a race condition could cause us to call SendSetPriority() after calling SendDeleteSelf. - - For example: - T1: SendDeleteSelf() - T2: if (!mIPCClosed) SendSetPriority() - T1: mIPCClosed = true - - MozReview-Commit-ID: 3XOwCaphb2o - - --HG-- - extra : source : 4ebdab0e332892378558817e30d0138c95199ce5 ---- - netwerk/protocol/http/HttpChannelParent.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git netwerk/protocol/http/HttpChannelParent.cpp netwerk/protocol/http/HttpChannelParent.cpp -index 064c5659e9ed..8ee13c2b5fbd 100644 ---- netwerk/protocol/http/HttpChannelParent.cpp -+++ netwerk/protocol/http/HttpChannelParent.cpp -@@ -2262,8 +2262,8 @@ HttpChannelParent::UpdateAndSerializeSecurityInfo(nsACString& aSerializedSecurit - bool - HttpChannelParent::DoSendDeleteSelf() - { -- bool rv = SendDeleteSelf(); - mIPCClosed = true; -+ bool rv = SendDeleteSelf(); - - CleanupBackgroundChannel(); - diff --git a/www/waterfox/files/patch-bug1334981 b/www/waterfox/files/patch-bug1334981 deleted file mode 100644 index 4c778d4adbf2..000000000000 --- a/www/waterfox/files/patch-bug1334981 +++ /dev/null @@ -1,29 +0,0 @@ -commit 57a68dc342dd -Author: Henrik Skupin -Date: Thu Jun 7 15:48:48 2018 +0200 - - Bug 1334981 - Backed out changeset d6ca24ba3673 for regression caused by bug 887718. r=enndeakin, a=RyanVM - - MozReview-Commit-ID: 9hIcRVRseO1 - - --HG-- - extra : source : 1f16a2ff45ab492025e42afb8122f4d52cb24c0b ---- - dom/base/nsFocusManager.cpp | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git dom/base/nsFocusManager.cpp dom/base/nsFocusManager.cpp -index 864c76402cb12..c5758cfabd523 100644 ---- dom/base/nsFocusManager.cpp -+++ dom/base/nsFocusManager.cpp -@@ -742,9 +742,7 @@ nsFocusManager::WindowRaised(mozIDOMWindowProxy* aWindow) - return NS_ERROR_FAILURE; - } - -- if (!sTestMode) { -- baseWindow->SetVisibility(true); -- } -+ baseWindow->SetVisibility(true); - } - - // If this is a parent or single process window, send the activate event. diff --git a/www/waterfox/files/patch-bug1338764 b/www/waterfox/files/patch-bug1338764 deleted file mode 100644 index fcedb824ff69..000000000000 --- a/www/waterfox/files/patch-bug1338764 +++ /dev/null @@ -1,120 +0,0 @@ -commit 0e98738d78b9 -Author: Xidorn Quan -Date: Mon Jul 17 15:10:50 2017 +1000 - - Bug 1338764 part 1 - Use const rather than enum for context flags of nsStyleSVG. r=manishearth - - MozReview-Commit-ID: KzORnfVXgLJ - - --HG-- - extra : rebase_source : 365842d6e6fda4b35a5932272773a3d88bfc04c6 ---- - layout/style/nsStyleStruct.h | 22 +++++++++++++--------- - 1 file changed, 13 insertions(+), 9 deletions(-) - -diff --git layout/style/nsStyleStruct.h layout/style/nsStyleStruct.h -index 59833e37f3bb..eccc02380f7e 100644 ---- layout/style/nsStyleStruct.h -+++ layout/style/nsStyleStruct.h -@@ -3603,15 +3603,19 @@ private: - // Flags to represent the use of context-fill and context-stroke - // for fill-opacity or stroke-opacity, and context-value for stroke-dasharray, - // stroke-dashoffset and stroke-width. -- enum { -- FILL_OPACITY_SOURCE_MASK = 0x03, // fill-opacity: context-{fill,stroke} -- STROKE_OPACITY_SOURCE_MASK = 0x0C, // stroke-opacity: context-{fill,stroke} -- STROKE_DASHARRAY_CONTEXT = 0x10, // stroke-dasharray: context-value -- STROKE_DASHOFFSET_CONTEXT = 0x20, // stroke-dashoffset: context-value -- STROKE_WIDTH_CONTEXT = 0x40, // stroke-width: context-value -- FILL_OPACITY_SOURCE_SHIFT = 0, -- STROKE_OPACITY_SOURCE_SHIFT = 2, -- }; -+ -+ // fill-opacity: context-{fill,stroke} -+ static const uint8_t FILL_OPACITY_SOURCE_MASK = 0x03; -+ // stroke-opacity: context-{fill,stroke} -+ static const uint8_t STROKE_OPACITY_SOURCE_MASK = 0x0C; -+ // stroke-dasharray: context-value -+ static const uint8_t STROKE_DASHARRAY_CONTEXT = 0x10; -+ // stroke-dashoffset: context-value -+ static const uint8_t STROKE_DASHOFFSET_CONTEXT = 0x20; -+ // stroke-width: context-value -+ static const uint8_t STROKE_WIDTH_CONTEXT = 0x40; -+ static const uint8_t FILL_OPACITY_SOURCE_SHIFT = 0; -+ static const uint8_t STROKE_OPACITY_SOURCE_SHIFT = 2; - - uint8_t mContextFlags; // [inherited] - }; - -commit 63d6f06939ee -Author: Xidorn Quan -Date: Tue Aug 1 16:05:04 2017 +1000 - - Bug 1338764 part 2 - Add context-{fill,stroke}-opacity support to {fill,stroke}-opacity. r=manishearth - - MozReview-Commit-ID: HzUHmZb8ICl - - --HG-- - extra : rebase_source : b8746c4d9d4cfc3abe6645f583dc08d0f7c75341 ---- - layout/style/ServoBindings.toml | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git layout/style/ServoBindings.toml layout/style/ServoBindings.toml -index 5e09c24eb0e3..6d8e979fdc1f 100644 ---- layout/style/ServoBindings.toml -+++ layout/style/ServoBindings.toml -@@ -232,6 +232,7 @@ whitelist-types = [ - "nsStylePadding", - "nsStylePosition", - "nsStyleSVG", -+ "nsStyleSVGOpacitySource", - "nsStyleSVGPaint", - "nsStyleSVGReset", - "nsStyleTable", -@@ -458,6 +459,7 @@ structs-types = [ - "nsStylePosition", - "nsStyleQuoteValues", - "nsStyleSVG", -+ "nsStyleSVGOpacitySource", - "nsStyleSVGPaint", - "nsStyleSVGReset", - "nsStyleTable", - -commit 03e036aff26d -Author: Xidorn Quan -Date: Tue Aug 1 16:38:27 2017 +1000 - - Bug 1338764 part 3 - Update test expectations. r=manishearth - - MozReview-Commit-ID: HzN5WP210G7 - - --HG-- - extra : rebase_source : c3585958cb5159a242515a80f226e43f506319d8 ---- - layout/style/test/stylo-failures.md | 8 -------- - 1 file changed, 8 deletions(-) - -diff --git layout/style/test/stylo-failures.md layout/style/test/stylo-failures.md -index 0509269b1334..d69fa898d9be 100644 ---- layout/style/test/stylo-failures.md -+++ layout/style/test/stylo-failures.md -@@ -34,10 +34,6 @@ to mochitest command. - * Animation support: - * SMIL Animation - * test_restyles_in_smil_animation.html [2] --* Unsupported values -- * SVG-in-OpenType values not supported servo/servo#15211 bug 1338764 -- * test_value_storage.html `context-` [7] -- * test_bug798843_pref.html [3] - * Incorrect serialization - * place-{content,items,self} shorthands bug 1363971 - * test_align_shorthand_serialization.html [6] -@@ -58,7 +54,3 @@ to mochitest command. - ## Unknown / Unsure - - ## Ignore -- --* Ignore for now since should be mostly identical to test_value_storage.html -- * test_value_cloning.html [*] -- * test_value_computation.html [*] diff --git a/www/waterfox/files/patch-bug1340039 b/www/waterfox/files/patch-bug1340039 deleted file mode 100644 index 2f601b7db234..000000000000 --- a/www/waterfox/files/patch-bug1340039 +++ /dev/null @@ -1,232 +0,0 @@ -commit 753d522440f6 -Author: Hector Zhao -Date: Wed Mar 14 16:44:36 2018 +0800 - - Bug 1340039 - Set contentPolicyType when copying image, and pass it between processes. r=smaug, a=jcristau - - MozReview-Commit-ID: CJj1a1Lj699 - - --HG-- - extra : source : 445ec9da938f984a6fe2fe163c7f3d7be4710a77 ---- - dom/base/nsContentUtils.cpp | 2 ++ - dom/base/nsContentUtils.h | 1 + - dom/base/nsCopySupport.cpp | 1 + - dom/events/EventStateManager.cpp | 5 ++++- - dom/ipc/ContentParent.cpp | 2 ++ - dom/ipc/ContentParent.h | 1 + - dom/ipc/PBrowser.ipdl | 3 ++- - dom/ipc/PContent.ipdl | 1 + - dom/ipc/TabChild.cpp | 4 +++- - dom/ipc/TabChild.h | 3 ++- - dom/ipc/TabParent.cpp | 6 ++++-- - dom/ipc/TabParent.h | 3 ++- - widget/nsClipboardProxy.cpp | 5 ++++- - 13 files changed, 29 insertions(+), 8 deletions(-) - -diff --git dom/base/nsContentUtils.cpp dom/base/nsContentUtils.cpp -index fe773465faba..63e1ac06bf2d 100644 ---- dom/base/nsContentUtils.cpp -+++ dom/base/nsContentUtils.cpp -@@ -7986,6 +7986,7 @@ nsresult - nsContentUtils::IPCTransferableToTransferable(const IPCDataTransfer& aDataTransfer, - const bool& aIsPrivateData, - nsIPrincipal* aRequestingPrincipal, -+ const nsContentPolicyType& aContentPolicyType, - nsITransferable* aTransferable, - mozilla::dom::nsIContentParent* aContentParent, - mozilla::dom::TabChild* aTabChild) -@@ -8051,6 +8052,7 @@ nsContentUtils::IPCTransferableToTransferable(const IPCDataTransfer& aDataTransf - - aTransferable->SetIsPrivateData(aIsPrivateData); - aTransferable->SetRequestingPrincipal(aRequestingPrincipal); -+ aTransferable->SetContentPolicyType(aContentPolicyType); - return NS_OK; - } - -diff --git dom/base/nsContentUtils.h dom/base/nsContentUtils.h -index 356d3841b9e9..9ef79a569ea3 100644 ---- dom/base/nsContentUtils.h -+++ dom/base/nsContentUtils.h -@@ -2845,6 +2845,7 @@ public: - static nsresult IPCTransferableToTransferable(const mozilla::dom::IPCDataTransfer& aDataTransfer, - const bool& aIsPrivateData, - nsIPrincipal* aRequestingPrincipal, -+ const nsContentPolicyType& aContentPolicyType, - nsITransferable* aTransferable, - mozilla::dom::nsIContentParent* aContentParent, - mozilla::dom::TabChild* aTabChild); -diff --git dom/base/nsCopySupport.cpp dom/base/nsCopySupport.cpp -index 0f680c21c126..5e2d4065b3b7 100644 ---- dom/base/nsCopySupport.cpp -+++ dom/base/nsCopySupport.cpp -@@ -680,6 +680,7 @@ static nsresult AppendImagePromise(nsITransferable* aTransferable, - NS_ENSURE_SUCCESS(rv, rv); - - aTransferable->SetRequestingPrincipal(node->NodePrincipal()); -+ aTransferable->SetContentPolicyType(nsIContentPolicy::TYPE_INTERNAL_IMAGE); - - // add the dataless file promise flavor - return aTransferable->AddDataFlavor(kFilePromiseMime); -diff --git dom/events/EventStateManager.cpp dom/events/EventStateManager.cpp -index 4423e3aecc5e..bdc1bb6e50c9 100644 ---- dom/events/EventStateManager.cpp -+++ dom/events/EventStateManager.cpp -@@ -5469,8 +5469,11 @@ EventStateManager::DoContentCommandEvent(WidgetContentCommandEvent* aEvent) - transferable->GetIsPrivateData(&isPrivateData); - nsCOMPtr requestingPrincipal; - transferable->GetRequestingPrincipal(getter_AddRefs(requestingPrincipal)); -+ nsContentPolicyType contentPolicyType = nsIContentPolicy::TYPE_OTHER; -+ transferable->GetContentPolicyType(&contentPolicyType); - remote->SendPasteTransferable(ipcDataTransfer, isPrivateData, -- IPC::Principal(requestingPrincipal)); -+ IPC::Principal(requestingPrincipal), -+ contentPolicyType); - rv = NS_OK; - } else { - nsCOMPtr commandController = do_QueryInterface(controller); -diff --git dom/ipc/ContentParent.cpp dom/ipc/ContentParent.cpp -index e27f3eedc1b1..3c3d2fbc3735 100644 ---- dom/ipc/ContentParent.cpp -+++ dom/ipc/ContentParent.cpp -@@ -2605,6 +2605,7 @@ mozilla::ipc::IPCResult - ContentParent::RecvSetClipboard(const IPCDataTransfer& aDataTransfer, - const bool& aIsPrivateData, - const IPC::Principal& aRequestingPrincipal, -+ const uint32_t& aContentPolicyType, - const int32_t& aWhichClipboard) - { - nsresult rv; -@@ -2619,6 +2620,7 @@ ContentParent::RecvSetClipboard(const IPCDataTransfer& aDataTransfer, - rv = nsContentUtils::IPCTransferableToTransferable(aDataTransfer, - aIsPrivateData, - aRequestingPrincipal, -+ aContentPolicyType, - trans, this, nullptr); - NS_ENSURE_SUCCESS(rv, IPC_OK()); - -diff --git dom/ipc/ContentParent.h dom/ipc/ContentParent.h -index 1977cfbfd651..a1311bd39403 100644 ---- dom/ipc/ContentParent.h -+++ dom/ipc/ContentParent.h -@@ -976,6 +976,7 @@ private: - virtual mozilla::ipc::IPCResult RecvSetClipboard(const IPCDataTransfer& aDataTransfer, - const bool& aIsPrivateData, - const IPC::Principal& aRequestingPrincipal, -+ const uint32_t& aContentPolicyType, - const int32_t& aWhichClipboard) override; - - virtual mozilla::ipc::IPCResult RecvGetClipboard(nsTArray&& aTypes, -diff --git dom/ipc/PBrowser.ipdl dom/ipc/PBrowser.ipdl -index 3a7b21271fec..b1cf9efbe964 100644 ---- dom/ipc/PBrowser.ipdl -+++ dom/ipc/PBrowser.ipdl -@@ -720,7 +720,8 @@ child: - */ - async PasteTransferable(IPCDataTransfer aDataTransfer, - bool aIsPrivateData, -- Principal aRequestingPrincipal); -+ Principal aRequestingPrincipal, -+ uint32_t aContentPolicyType); - - /** - * Activate event forwarding from client to parent. -diff --git dom/ipc/PContent.ipdl dom/ipc/PContent.ipdl -index 7e33b2920cbe..4ab9da3cc105 100644 ---- dom/ipc/PContent.ipdl -+++ dom/ipc/PContent.ipdl -@@ -837,6 +837,7 @@ parent: - async SetClipboard(IPCDataTransfer aDataTransfer, - bool aIsPrivateData, - Principal aRequestingPrincipal, -+ uint32_t aContentPolicyType, - int32_t aWhichClipboard); - - // Given a list of supported types, returns the clipboard data for the -diff --git dom/ipc/TabChild.cpp dom/ipc/TabChild.cpp -index 50725636d280..72df59ea98c0 100644 ---- dom/ipc/TabChild.cpp -+++ dom/ipc/TabChild.cpp -@@ -2164,7 +2164,8 @@ TabChild::RecvNormalPrioritySelectionEvent(const WidgetSelectionEvent& aEvent) - mozilla::ipc::IPCResult - TabChild::RecvPasteTransferable(const IPCDataTransfer& aDataTransfer, - const bool& aIsPrivateData, -- const IPC::Principal& aRequestingPrincipal) -+ const IPC::Principal& aRequestingPrincipal, -+ const uint32_t& aContentPolicyType) - { - nsresult rv; - nsCOMPtr trans = -@@ -2175,6 +2176,7 @@ TabChild::RecvPasteTransferable(const IPCDataTransfer& aDataTransfer, - rv = nsContentUtils::IPCTransferableToTransferable(aDataTransfer, - aIsPrivateData, - aRequestingPrincipal, -+ aContentPolicyType, - trans, nullptr, this); - NS_ENSURE_SUCCESS(rv, IPC_OK()); - -diff --git dom/ipc/TabChild.h dom/ipc/TabChild.h -index f18906568c1c..48bd8e9eb86e 100644 ---- dom/ipc/TabChild.h -+++ dom/ipc/TabChild.h -@@ -454,7 +454,8 @@ public: - virtual mozilla::ipc::IPCResult - RecvPasteTransferable(const IPCDataTransfer& aDataTransfer, - const bool& aIsPrivateData, -- const IPC::Principal& aRequestingPrincipal) override; -+ const IPC::Principal& aRequestingPrincipal, -+ const uint32_t& aContentPolicyType) override; - - virtual mozilla::ipc::IPCResult - RecvActivateFrameEvent(const nsString& aType, const bool& aCapture) override; -diff --git dom/ipc/TabParent.cpp dom/ipc/TabParent.cpp -index d4e3d11ea2e9..ae43c24e8891 100644 ---- dom/ipc/TabParent.cpp -+++ dom/ipc/TabParent.cpp -@@ -2312,11 +2312,13 @@ TabParent::SendSelectionEvent(WidgetSelectionEvent& aEvent) - bool - TabParent::SendPasteTransferable(const IPCDataTransfer& aDataTransfer, - const bool& aIsPrivateData, -- const IPC::Principal& aRequestingPrincipal) -+ const IPC::Principal& aRequestingPrincipal, -+ const uint32_t& aContentPolicyType) - { - return PBrowserParent::SendPasteTransferable(aDataTransfer, - aIsPrivateData, -- aRequestingPrincipal); -+ aRequestingPrincipal, -+ aContentPolicyType); - } - - /*static*/ TabParent* -diff --git dom/ipc/TabParent.h dom/ipc/TabParent.h -index c31827499403..e3c2601ce0b4 100644 ---- dom/ipc/TabParent.h -+++ dom/ipc/TabParent.h -@@ -497,7 +497,8 @@ public: - - bool SendPasteTransferable(const IPCDataTransfer& aDataTransfer, - const bool& aIsPrivateData, -- const IPC::Principal& aRequestingPrincipal); -+ const IPC::Principal& aRequestingPrincipal, -+ const uint32_t& aContentPolicyType); - - static TabParent* GetFrom(nsFrameLoader* aFrameLoader); - -diff --git widget/nsClipboardProxy.cpp widget/nsClipboardProxy.cpp -index f7d863475b13..4fb90721c0b6 100644 ---- widget/nsClipboardProxy.cpp -+++ widget/nsClipboardProxy.cpp -@@ -37,8 +37,11 @@ nsClipboardProxy::SetData(nsITransferable *aTransferable, - aTransferable->GetIsPrivateData(&isPrivateData); - nsCOMPtr requestingPrincipal; - aTransferable->GetRequestingPrincipal(getter_AddRefs(requestingPrincipal)); -+ nsContentPolicyType contentPolicyType = nsIContentPolicy::TYPE_OTHER; -+ aTransferable->GetContentPolicyType(&contentPolicyType); - child->SendSetClipboard(ipcDataTransfer, isPrivateData, -- IPC::Principal(requestingPrincipal), aWhichClipboard); -+ IPC::Principal(requestingPrincipal), -+ contentPolicyType, aWhichClipboard); - - return NS_OK; - } diff --git a/www/waterfox/files/patch-bug1343147 b/www/waterfox/files/patch-bug1343147 deleted file mode 100644 index a548c655e4dc..000000000000 --- a/www/waterfox/files/patch-bug1343147 +++ /dev/null @@ -1,117 +0,0 @@ -commit e215b167b9b9 -Author: cku -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 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 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 @@ -+ -+ -+ hello -+ -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/waterfox/files/patch-bug1345058 b/www/waterfox/files/patch-bug1345058 deleted file mode 100644 index 02874af1505b..000000000000 --- a/www/waterfox/files/patch-bug1345058 +++ /dev/null @@ -1,620 +0,0 @@ -commit 1f57fdb85d3d -Author: Thomas Nguyen -Date: Mon Aug 14 14:05:23 2017 +0800 - - Bug 1345058 - Asynchronously decide if a flash document should be blocked. r=baku - - MozReview-Commit-ID: K91cSvIdOrb - - --HG-- - extra : rebase_source : 4d91ab3499c0124129e74a054c5cc78882ff351e ---- - dom/base/nsDocument.cpp | 447 ++++++++++++++++++--- - dom/base/nsDocument.h | 5 + - .../url-classifier/nsUrlClassifierDBService.cpp | 22 +- - 3 files changed, 401 insertions(+), 73 deletions(-) - -diff --git dom/base/nsDocument.cpp dom/base/nsDocument.cpp -index acfde3bc0210..386c96745438 100644 ---- dom/base/nsDocument.cpp -+++ dom/base/nsDocument.cpp -@@ -279,6 +279,7 @@ - #include "nsIURIClassifier.h" - #include "mozilla/DocumentStyleRootIterator.h" - #include "mozilla/ServoRestyleManager.h" -+#include "mozilla/ClearOnShutdown.h" - - using namespace mozilla; - using namespace mozilla::dom; -@@ -319,6 +320,65 @@ GetHttpChannelHelper(nsIChannel* aChannel, nsIHttpChannel** aHttpChannel) - return NS_OK; - } - -+//////////////////////////////////////////////////////////////////// -+// PrincipalFlashClassifier -+ -+// Classify the flash based on the document principal. -+// The usage of this class is as follows: -+// -+// 1) Call AsyncClassify() as early as possible to asynchronously do -+// classification against all the flash blocking related tables -+// via nsIURIClassifier.asyncClassifyLocalWithTables. -+// -+// 2) At any time you need the classification result, call Result() -+// and it is guaranteed to give you the result. Note that you have -+// to specify "aIsThirdParty" to the function so please make sure -+// you can already correctly decide if the document is third-party. -+// -+// Behind the scenes, the sync classification API -+// (nsIURIClassifier.classifyLocalWithTable) may be called as a fallback to -+// synchronously get the result if the asyncClassifyLocalWithTables hasn't -+// been done yet. -+// -+// 3) You can call Result() as many times as you want and only the first time -+// it may unfortunately call the blocking sync API. The subsequent call -+// will just return the result that came out at the first time. -+// -+class PrincipalFlashClassifier final : public nsIURIClassifierCallback -+{ -+public: -+ NS_DECL_THREADSAFE_ISUPPORTS -+ NS_DECL_NSIURICLASSIFIERCALLBACK -+ -+ PrincipalFlashClassifier(); -+ -+ // Fire async classification based on the given principal. -+ void AsyncClassify(nsIPrincipal* aPrincipal); -+ -+ // Would block if the result hasn't come out. -+ mozilla::dom::FlashClassification ClassifyMaybeSync(nsIPrincipal* aPrincipal, -+ bool aIsThirdParty); -+ -+private: -+ ~PrincipalFlashClassifier() = default; -+ -+ void Reset(); -+ bool EnsureUriClassifier(); -+ mozilla::dom::FlashClassification CheckIfClassifyNeeded(nsIPrincipal* aPrincipal); -+ mozilla::dom::FlashClassification Resolve(bool aIsThirdParty); -+ mozilla::dom::FlashClassification AsyncClassifyInternal(nsIPrincipal* aPrincipal); -+ void GetClassificationTables(bool aIsThirdParty, nsACString& aTables); -+ -+ // For the fallback sync classification. -+ nsCOMPtr mClassificationURI; -+ -+ nsCOMPtr mUriClassifier; -+ bool mAsyncClassified; -+ nsTArray mMatchedTables; -+ mozilla::dom::FlashClassification mResult; -+}; -+ -+ - #define NAME_NOT_VALID ((nsSimpleContentList*)1) - - nsIdentifierMapEntry::~nsIdentifierMapEntry() -@@ -1575,6 +1635,9 @@ nsDocument::nsDocument(const char* aContentType) - - // void state used to differentiate an empty source from an unselected source - mPreloadPictureFoundSource.SetIsVoid(true); -+ // For determining if this is a flash document which should be -+ // blocked based on its principal. -+ mPrincipalFlashClassifier = new PrincipalFlashClassifier(); - } - - void -@@ -2761,6 +2824,11 @@ nsDocument::StartDocumentLoad(const char* aCommand, nsIChannel* aChannel, - aChannel->Cancel(NS_ERROR_CSP_FRAME_ANCESTOR_VIOLATION); - } - -+ // Perform a async flash classification based on the doc principal -+ // in an early stage to reduce the blocking time. -+ mFlashClassification = FlashClassification::Unclassified; -+ mPrincipalFlashClassifier->AsyncClassify(GetPrincipal()); -+ - return NS_OK; - } - -@@ -13483,6 +13551,23 @@ nsIDocument::UpdateStyleBackendType() - #endif - } - -+/** -+ * Retrieves the classification of the Flash plugins in the document based on -+ * the classification lists. We perform AsyncInitFlashClassification on -+ * StartDocumentLoad() and the result may not be initialized when this function -+ * gets called. In that case, We can only unfortunately have a blocking wait. -+ * -+ * For more information, see -+ * toolkit/components/url-classifier/flash-block-lists.rst -+ */ -+FlashClassification -+nsDocument::PrincipalFlashClassification() -+{ -+ MOZ_ASSERT(mPrincipalFlashClassifier); -+ return mPrincipalFlashClassifier->ClassifyMaybeSync(GetPrincipal(), -+ IsThirdParty()); -+} -+ - /** - * Helper function for |nsDocument::PrincipalFlashClassification| - * -@@ -13523,27 +13608,279 @@ ArrayContainsTable(const nsTArray& aTableArray, - return false; - } - --/** -- * Retrieves the classification of the Flash plugins in the document based on -- * the classification lists. -- * -- * For more information, see -- * toolkit/components/url-classifier/flash-block-lists.rst -- */ -+namespace { -+ -+// An object to store all preferences we need for flash blocking feature. -+struct PrefStore -+{ -+ PrefStore() -+ { -+ Preferences::AddBoolVarCache(&mFlashBlockEnabled, -+ "plugins.flashBlock.enabled"); -+ Preferences::AddBoolVarCache(&mPluginsHttpOnly, -+ "plugins.http_https_only"); -+ -+ // We only need to register string-typed preferences. -+ Preferences::RegisterCallback(UpdateStringPrefs, "urlclassifier.flashAllowTable", this); -+ Preferences::RegisterCallback(UpdateStringPrefs, "urlclassifier.flashAllowExceptTable", this); -+ Preferences::RegisterCallback(UpdateStringPrefs, "urlclassifier.flashTable", this); -+ Preferences::RegisterCallback(UpdateStringPrefs, "urlclassifier.flashExceptTable", this); -+ Preferences::RegisterCallback(UpdateStringPrefs, "urlclassifier.flashSubDocTable", this); -+ Preferences::RegisterCallback(UpdateStringPrefs, "urlclassifier.flashSubDocExceptTable", this); -+ -+ UpdateStringPrefs(); -+ } -+ -+ ~PrefStore() -+ { -+ Preferences::UnregisterCallback(UpdateStringPrefs, "urlclassifier.flashAllowTable", this); -+ Preferences::UnregisterCallback(UpdateStringPrefs, "urlclassifier.flashAllowExceptTable", this); -+ Preferences::UnregisterCallback(UpdateStringPrefs, "urlclassifier.flashTable", this); -+ Preferences::UnregisterCallback(UpdateStringPrefs, "urlclassifier.flashExceptTable", this); -+ Preferences::UnregisterCallback(UpdateStringPrefs, "urlclassifier.flashSubDocTable", this); -+ Preferences::UnregisterCallback(UpdateStringPrefs, "urlclassifier.flashSubDocExceptTable", this); -+ } -+ -+ void UpdateStringPrefs() -+ { -+ Preferences::GetCString("urlclassifier.flashAllowTable", mAllowTables); -+ Preferences::GetCString("urlclassifier.flashAllowExceptTable", mAllowExceptionsTables); -+ Preferences::GetCString("urlclassifier.flashTable", mDenyTables); -+ Preferences::GetCString("urlclassifier.flashExceptTable", mDenyExceptionsTables); -+ Preferences::GetCString("urlclassifier.flashSubDocTable", mSubDocDenyTables); -+ Preferences::GetCString("urlclassifier.flashSubDocExceptTable", mSubDocDenyExceptionsTables); -+ } -+ -+ static void UpdateStringPrefs(const char*, void* aClosure) -+ { -+ static_cast(aClosure)->UpdateStringPrefs(); -+ } -+ -+ bool mFlashBlockEnabled; -+ bool mPluginsHttpOnly; -+ -+ nsCString mAllowTables; -+ nsCString mAllowExceptionsTables; -+ nsCString mDenyTables; -+ nsCString mDenyExceptionsTables; -+ nsCString mSubDocDenyTables; -+ nsCString mSubDocDenyExceptionsTables; -+}; -+ -+static const -+PrefStore& GetPrefStore() -+{ -+ static UniquePtr sPrefStore; -+ if (!sPrefStore) { -+ sPrefStore.reset(new PrefStore()); -+ ClearOnShutdown(&sPrefStore); -+ } -+ return *sPrefStore; -+} -+ -+} // end of unnamed namespace. -+ -+//////////////////////////////////////////////////////////////////// -+// PrincipalFlashClassifier implementation. -+ -+NS_IMPL_ISUPPORTS(PrincipalFlashClassifier, nsIURIClassifierCallback) -+ -+PrincipalFlashClassifier::PrincipalFlashClassifier() -+{ -+ Reset(); -+} -+ -+void -+PrincipalFlashClassifier::Reset() -+{ -+ mAsyncClassified = false; -+ mMatchedTables.Clear(); -+ mResult = FlashClassification::Unclassified; -+} -+ -+void -+PrincipalFlashClassifier::GetClassificationTables(bool aIsThirdParty, -+ nsACString& aTables) -+{ -+ aTables.Truncate(); -+ auto& prefs = GetPrefStore(); -+ -+ MaybeAddTableToTableList(prefs.mAllowTables, aTables); -+ MaybeAddTableToTableList(prefs.mAllowExceptionsTables, aTables); -+ MaybeAddTableToTableList(prefs.mDenyTables, aTables); -+ MaybeAddTableToTableList(prefs.mDenyExceptionsTables, aTables); -+ -+ if (aIsThirdParty) { -+ MaybeAddTableToTableList(prefs.mSubDocDenyTables, aTables); -+ MaybeAddTableToTableList(prefs.mSubDocDenyExceptionsTables, aTables); -+ } -+} -+ -+bool -+PrincipalFlashClassifier::EnsureUriClassifier() -+{ -+ if (!mUriClassifier) { -+ mUriClassifier = do_GetService(NS_URICLASSIFIERSERVICE_CONTRACTID); -+ } -+ -+ return !!mUriClassifier; -+} -+ - FlashClassification --nsDocument::PrincipalFlashClassification() -+PrincipalFlashClassifier::ClassifyMaybeSync(nsIPrincipal* aPrincipal, bool aIsThirdParty) -+{ -+ if (FlashClassification::Unclassified != mResult) { -+ // We already have the result. Just return it. -+ return mResult; -+ } -+ -+ // TODO: Bug 1342333 - Entirely remove the use of the sync API -+ // (ClassifyLocalWithTables). -+ if (!mAsyncClassified) { -+ -+ // -+ // We may -+ // 1) have called AsyncClassifyLocalWithTables but OnClassifyComplete -+ // hasn't been called. -+ // 2) haven't even called AsyncClassifyLocalWithTables. -+ // -+ // In both cases we need to do the synchronous classification as the fallback. -+ // -+ -+ if (!EnsureUriClassifier()) { -+ return FlashClassification::Denied; -+ } -+ mResult = CheckIfClassifyNeeded(aPrincipal); -+ if (FlashClassification::Unclassified != mResult) { -+ return mResult; -+ } -+ -+ nsresult rv; -+ nsAutoCString classificationTables; -+ GetClassificationTables(aIsThirdParty, classificationTables); -+ -+ if (!mClassificationURI) { -+ rv = aPrincipal->GetURI(getter_AddRefs(mClassificationURI)); -+ if (NS_FAILED(rv) || !mClassificationURI) { -+ mResult = FlashClassification::Denied; -+ return mResult; -+ } -+ } -+ -+ rv = mUriClassifier->ClassifyLocalWithTables(mClassificationURI, -+ classificationTables, -+ mMatchedTables); -+ if (NS_WARN_IF(NS_FAILED(rv))) { -+ if (rv == NS_ERROR_MALFORMED_URI) { -+ // This means that the URI had no hostname (ex: file://doc.html). In this -+ // case, we allow the default (Unknown plugin) behavior. -+ mResult = FlashClassification::Unknown; -+ } else { -+ mResult = FlashClassification::Denied; -+ } -+ return mResult; -+ } -+ } -+ -+ // Resolve the result based on mMatchedTables and aIsThirdParty. -+ mResult = Resolve(aIsThirdParty); -+ MOZ_ASSERT(FlashClassification::Unclassified != mResult); -+ -+ // The subsequent call of Result() will return the resolved result -+ // and never reach here until Reset() is called. -+ return mResult; -+} -+ -+/*virtual*/ nsresult -+PrincipalFlashClassifier::OnClassifyComplete(nsresult /*aErrorCode*/, -+ const nsACString& aLists, // Only this matters. -+ const nsACString& /*aProvider*/, -+ const nsACString& /*aPrefix*/) -+{ -+ mAsyncClassified = true; -+ -+ if (FlashClassification::Unclassified != mResult) { -+ // Result() has been called prior to this callback. -+ return NS_OK; -+ } -+ -+ // TODO: Bug 1364804 - We should use a callback type which notifies -+ // the result as a string array rather than a formatted string. -+ -+ // We only populate the matched list without resolving the classification -+ // result because we are not sure if the parent doc has been properly set. -+ // We also parse the comma-separated tables to array. (the code is copied -+ // from Classifier::SplitTables.) -+ nsACString::const_iterator begin, iter, end; -+ aLists.BeginReading(begin); -+ aLists.EndReading(end); -+ while (begin != end) { -+ iter = begin; -+ FindCharInReadable(',', iter, end); -+ nsDependentCSubstring table = Substring(begin,iter); -+ if (!table.IsEmpty()) { -+ mMatchedTables.AppendElement(Substring(begin, iter)); -+ } -+ begin = iter; -+ if (begin != end) { -+ begin++; -+ } -+ } -+ -+ return NS_OK; -+} -+ -+// We resolve the classification result based on aIsThirdParty -+// and the matched tables we got ealier on (via either sync or async API). -+FlashClassification -+PrincipalFlashClassifier::Resolve(bool aIsThirdParty) -+{ -+ MOZ_ASSERT(FlashClassification::Unclassified == mResult, -+ "We already have resolved classification result."); -+ -+ if (mMatchedTables.IsEmpty()) { -+ return FlashClassification::Unknown; -+ } -+ -+ auto& prefs = GetPrefStore(); -+ if (ArrayContainsTable(mMatchedTables, prefs.mDenyTables) && -+ !ArrayContainsTable(mMatchedTables, prefs.mDenyExceptionsTables)) { -+ return FlashClassification::Denied; -+ } else if (ArrayContainsTable(mMatchedTables, prefs.mAllowTables) && -+ !ArrayContainsTable(mMatchedTables, prefs.mAllowExceptionsTables)) { -+ return FlashClassification::Allowed; -+ } -+ -+ if (aIsThirdParty && ArrayContainsTable(mMatchedTables, prefs.mSubDocDenyTables) && -+ !ArrayContainsTable(mMatchedTables, prefs.mSubDocDenyExceptionsTables)) { -+ return FlashClassification::Denied; -+ } -+ -+ return FlashClassification::Unknown; -+} -+ -+void -+PrincipalFlashClassifier::AsyncClassify(nsIPrincipal* aPrincipal) -+{ -+ MOZ_ASSERT(FlashClassification::Unclassified == mResult, -+ "The old classification result should be reset first."); -+ Reset(); -+ mResult = AsyncClassifyInternal(aPrincipal); -+} -+ -+FlashClassification -+PrincipalFlashClassifier::CheckIfClassifyNeeded(nsIPrincipal* aPrincipal) - { - nsresult rv; - -- bool httpOnly = Preferences::GetBool("plugins.http_https_only", true); -- bool flashBlock = Preferences::GetBool("plugins.flashBlock.enabled", false); -+ auto& prefs = GetPrefStore(); - - // If neither pref is on, skip the null-principal and principal URI checks. -- if (!httpOnly && !flashBlock) { -- return FlashClassification::Unknown; -+ if (prefs.mPluginsHttpOnly && !prefs.mFlashBlockEnabled) { -+ return FlashClassification::Unknown; - } - -- nsCOMPtr principal = GetPrincipal(); -+ nsCOMPtr principal = aPrincipal; - if (principal->GetIsNullPrincipal()) { - return FlashClassification::Denied; - } -@@ -13554,7 +13891,7 @@ nsDocument::PrincipalFlashClassification() - return FlashClassification::Denied; - } - -- if (httpOnly) { -+ if (prefs.mPluginsHttpOnly) { - // Only allow plugins for documents from an HTTP/HTTPS origin. This should - // allow dependent data: URIs to load plugins, but not: - // * chrome documents -@@ -13570,49 +13907,50 @@ nsDocument::PrincipalFlashClassification() - - // If flash blocking is disabled, it is equivalent to all sites being - // on neither list. -- if (!flashBlock) { -+ if (!prefs.mFlashBlockEnabled) { - return FlashClassification::Unknown; - } - -- nsAutoCString allowTables, allowExceptionsTables, -- denyTables, denyExceptionsTables, -- subDocDenyTables, subDocDenyExceptionsTables, -- tables; -- Preferences::GetCString("urlclassifier.flashAllowTable", allowTables); -- MaybeAddTableToTableList(allowTables, tables); -- Preferences::GetCString("urlclassifier.flashAllowExceptTable", -- allowExceptionsTables); -- MaybeAddTableToTableList(allowExceptionsTables, tables); -- Preferences::GetCString("urlclassifier.flashTable", denyTables); -- MaybeAddTableToTableList(denyTables, tables); -- Preferences::GetCString("urlclassifier.flashExceptTable", -- denyExceptionsTables); -- MaybeAddTableToTableList(denyExceptionsTables, tables); -- -- bool isThirdPartyDoc = IsThirdParty(); -- if (isThirdPartyDoc) { -- Preferences::GetCString("urlclassifier.flashSubDocTable", -- subDocDenyTables); -- MaybeAddTableToTableList(subDocDenyTables, tables); -- Preferences::GetCString("urlclassifier.flashSubDocExceptTable", -- subDocDenyExceptionsTables); -- MaybeAddTableToTableList(subDocDenyExceptionsTables, tables); -+ return FlashClassification::Unclassified; -+} -+ -+// Using nsIURIClassifier.asyncClassifyLocalWithTables to do classification -+// against the flash related tables based on the given principal. -+FlashClassification -+PrincipalFlashClassifier::AsyncClassifyInternal(nsIPrincipal* aPrincipal) -+{ -+ auto result = CheckIfClassifyNeeded(aPrincipal); -+ if (FlashClassification::Unclassified != result) { -+ return result; - } - -+ // We haven't been able to decide if it's a third party document -+ // since determining if a document is third-party may depend on its -+ // parent document. At the time we call AsyncClassifyInternal -+ // (i.e. StartDocumentLoad) the parent document may not have been -+ // set. As a result, we wait until Resolve() to be called to -+ // take "is third party" into account. At this point, we just assume -+ // it's third-party to include every list. -+ nsAutoCString tables; -+ GetClassificationTables(true, tables); -+ - if (tables.IsEmpty()) { - return FlashClassification::Unknown; - } - -- nsCOMPtr uriClassifier = -- do_GetService(NS_URICLASSIFIERSERVICE_CONTRACTID, &rv); -- if (NS_FAILED(rv)) { -+ if (!EnsureUriClassifier()) { - return FlashClassification::Denied; - } - -- nsTArray results; -- rv = uriClassifier->ClassifyLocalWithTables(classificationURI, -- tables, -- results); -+ nsresult rv = aPrincipal->GetURI(getter_AddRefs(mClassificationURI)); -+ if (NS_FAILED(rv) || !mClassificationURI) { -+ return FlashClassification::Denied; -+ } -+ -+ rv = mUriClassifier->AsyncClassifyLocalWithTables(mClassificationURI, -+ tables, -+ this); -+ - if (NS_FAILED(rv)) { - if (rv == NS_ERROR_MALFORMED_URI) { - // This means that the URI had no hostname (ex: file://doc.html). In this -@@ -13623,24 +13961,7 @@ nsDocument::PrincipalFlashClassification() - } - } - -- if (results.IsEmpty()) { -- return FlashClassification::Unknown; -- } -- -- if (ArrayContainsTable(results, denyTables) && -- !ArrayContainsTable(results, denyExceptionsTables)) { -- return FlashClassification::Denied; -- } else if (ArrayContainsTable(results, allowTables) && -- !ArrayContainsTable(results, allowExceptionsTables)) { -- return FlashClassification::Allowed; -- } -- -- if (isThirdPartyDoc && ArrayContainsTable(results, subDocDenyTables) && -- !ArrayContainsTable(results, subDocDenyExceptionsTables)) { -- return FlashClassification::Denied; -- } -- -- return FlashClassification::Unknown; -+ return FlashClassification::Unclassified; - } - - FlashClassification -diff --git dom/base/nsDocument.h dom/base/nsDocument.h -index be3d59698b56..5a2938f353a3 100644 ---- dom/base/nsDocument.h -+++ dom/base/nsDocument.h -@@ -72,6 +72,7 @@ - #include "CustomElementRegistry.h" - #include "mozilla/dom/Performance.h" - #include "mozilla/Maybe.h" -+#include "nsIURIClassifier.h" - - #define XML_DECLARATION_BITS_DECLARATION_EXISTS (1 << 0) - #define XML_DECLARATION_BITS_ENCODING_EXISTS (1 << 1) -@@ -346,6 +347,9 @@ protected: - bool mHaveShutDown; - }; - -+// For classifying a flash document based on its principal. -+class PrincipalFlashClassifier; -+ - // Base class for our document implementations. - class nsDocument : public nsIDocument, - public nsIDOMDocument, -@@ -1184,6 +1188,7 @@ protected: - // non-null when this document is in fullscreen mode. - nsWeakPtr mFullscreenRoot; - -+ RefPtr mPrincipalFlashClassifier; - mozilla::dom::FlashClassification mFlashClassification; - // Do not use this value directly. Call the |IsThirdParty()| method, which - // caches its result here. -diff --git toolkit/components/url-classifier/nsUrlClassifierDBService.cpp toolkit/components/url-classifier/nsUrlClassifierDBService.cpp -index 074bfc583b93..6476b8d546f3 100644 ---- toolkit/components/url-classifier/nsUrlClassifierDBService.cpp -+++ toolkit/components/url-classifier/nsUrlClassifierDBService.cpp -@@ -1783,6 +1783,18 @@ nsUrlClassifierDBService::AsyncClassifyLocalWithTables(nsIURI *aURI, - MOZ_ASSERT(NS_IsMainThread(), "AsyncClassifyLocalWithTables must be called " - "on main thread"); - -+ // We do this check no matter what process we are in to return -+ // error as early as possible. -+ nsCOMPtr uri = NS_GetInnermostURI(aURI); -+ NS_ENSURE_TRUE(uri, NS_ERROR_FAILURE); -+ -+ nsAutoCString key; -+ // Canonicalize the url -+ nsCOMPtr utilsService = -+ do_GetService(NS_URLCLASSIFIERUTILS_CONTRACTID); -+ nsresult rv = utilsService->GetKeyForURI(uri, key); -+ NS_ENSURE_SUCCESS(rv, rv); -+ - if (XRE_IsContentProcess()) { - using namespace mozilla::dom; - using namespace mozilla::ipc; -@@ -1815,16 +1827,6 @@ nsUrlClassifierDBService::AsyncClassifyLocalWithTables(nsIURI *aURI, - using namespace mozilla::Telemetry; - auto startTime = TimeStamp::Now(); // For telemetry. - -- nsCOMPtr uri = NS_GetInnermostURI(aURI); -- NS_ENSURE_TRUE(uri, NS_ERROR_FAILURE); -- -- nsAutoCString key; -- // Canonicalize the url -- nsCOMPtr utilsService = -- do_GetService(NS_URLCLASSIFIERUTILS_CONTRACTID); -- nsresult rv = utilsService->GetKeyForURI(uri, key); -- NS_ENSURE_SUCCESS(rv, rv); -- - auto worker = mWorker; - nsCString tables(aTables); - diff --git a/www/waterfox/files/patch-bug1346126 b/www/waterfox/files/patch-bug1346126 deleted file mode 100644 index 667a2620904d..000000000000 --- a/www/waterfox/files/patch-bug1346126 +++ /dev/null @@ -1,27 +0,0 @@ -commit b46bdf1c51e0 -Author: Ryan Hunt -Date: Fri Jun 1 11:18:07 2018 -0500 - - Bug 1346126 - Use RemoveAllChildren in ~ContainerLayerComposite. r=mattwoodrow, a=RyanVM - - --HG-- - extra : source : b9814173e9a8ebbf9e6a0cb6dbf751fadead17c4 ---- - gfx/layers/composite/ContainerLayerComposite.cpp | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git gfx/layers/composite/ContainerLayerComposite.cpp gfx/layers/composite/ContainerLayerComposite.cpp -index c40b3c19f8a88..74aed9bbcc03c 100644 ---- gfx/layers/composite/ContainerLayerComposite.cpp -+++ gfx/layers/composite/ContainerLayerComposite.cpp -@@ -650,9 +650,7 @@ ContainerLayerComposite::~ContainerLayerComposite() - // LayerManagerComposite::Destroy(), a parent - // *ContainerLayerComposite::Destroy(), or Disconnect() will trigger - // cleanup of our resources. -- while (mFirstChild) { -- RemoveChild(mFirstChild); -- } -+ RemoveAllChildren(); - } - - void diff --git a/www/waterfox/files/patch-bug1346535 b/www/waterfox/files/patch-bug1346535 deleted file mode 100644 index c7621895d3dd..000000000000 --- a/www/waterfox/files/patch-bug1346535 +++ /dev/null @@ -1,504 +0,0 @@ -commit 8ed454acd81e -Author: Samuel Thibault -Date: Fri Mar 16 15:57:00 2018 -0400 - - Bug 1346535 - atk: Introduce U+FEFF characters to match AT-SPI offsets with DOM offsets. r=surkov, r=dbaron a=jcristau - - --HG-- - extra : source : 6f9396e9ea0a261c881dfafbfce894d7138beb6f ---- - accessible/atk/DOMtoATK.cpp | 161 +++++++++++++++++++++++++++++++++ - accessible/atk/DOMtoATK.h | 163 ++++++++++++++++++++++++++++++++++ - accessible/atk/moz.build | 1 + - accessible/atk/nsMaiInterfaceText.cpp | 40 ++++----- - xpcom/string/nsUTF8Utils.h | 24 +++++ - 5 files changed, 369 insertions(+), 20 deletions(-) - -diff --git accessible/atk/DOMtoATK.cpp accessible/atk/DOMtoATK.cpp -new file mode 100644 -index 000000000000..ea9fa543186c ---- /dev/null -+++ accessible/atk/DOMtoATK.cpp -@@ -0,0 +1,161 @@ -+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#include "DOMtoATK.h" -+#include "nsUTF8Utils.h" -+ -+namespace mozilla { -+namespace a11y { -+ -+namespace DOMtoATK { -+ -+void -+AddBOMs(nsACString& aDest, const nsACString& aSource) -+{ -+ uint32_t destlength = 0; -+ -+ // First compute how much room we will need. -+ for (uint32_t srci = 0; srci < aSource.Length(); ) { -+ int bytes = UTF8traits::bytes(aSource[srci]); -+ if (bytes >= 4) { -+ // Non-BMP character, will add a BOM after it. -+ destlength += 3; -+ } -+ // Skip whole character encoding. -+ srci += bytes; -+ destlength += bytes; -+ } -+ -+ uint32_t desti = 0; // Index within aDest. -+ -+ // Add BOMs after non-BMP characters. -+ aDest.SetLength(destlength); -+ for (uint32_t srci = 0; srci < aSource.Length(); ) { -+ uint32_t bytes = UTF8traits::bytes(aSource[srci]); -+ -+ MOZ_ASSERT(bytes <= aSource.Length() - srci, "We should have the whole sequence"); -+ -+ // Copy whole sequence. -+ aDest.Replace(desti, bytes, Substring(aSource, srci, bytes)); -+ desti += bytes; -+ srci += bytes; -+ -+ if (bytes >= 4) { -+ // More than 4 bytes in UTF-8 encoding exactly means more than 16 encoded -+ // bits. This is thus a non-BMP character which needed a surrogate -+ // pair to get encoded in UTF-16, add a BOM after it. -+ -+ // And add a BOM after it. -+ aDest.Replace(desti, 3, "\xEF\xBB\xBF"); -+ desti += 3; -+ } -+ } -+ MOZ_ASSERT(desti == destlength, "Incoherency between computed length" -+ "and actually translated length"); -+} -+ -+void -+ATKStringConverterHelper::AdjustOffsets(gint* aStartOffset, gint* aEndOffset, -+ gint count) -+{ -+ MOZ_ASSERT(!mAdjusted, "DOMtoATK::ATKStringConverterHelper::AdjustOffsets needs to be called only once"); -+ -+ if (*aStartOffset > 0) { -+ (*aStartOffset)--; -+ mStartShifted = true; -+ } -+ -+ if (*aEndOffset != -1 && *aEndOffset < count) { -+ (*aEndOffset)++; -+ mEndShifted = true; -+ } -+ -+#ifdef DEBUG -+ mAdjusted = true; -+#endif -+} -+ -+gchar* -+ATKStringConverterHelper::FinishUTF16toUTF8(nsCString& aStr) -+{ -+ int skip = 0; -+ -+ if (mStartShifted) { -+ // AdjustOffsets added a leading character. -+ -+ MOZ_ASSERT(aStr.Length() > 0, "There should be a leading character"); -+ MOZ_ASSERT(static_cast(aStr.Length()) >= UTF8traits::bytes(aStr.CharAt(0)), -+ "The leading character should be complete"); -+ -+ // drop first character -+ skip = UTF8traits::bytes(aStr.CharAt(0)); -+ } -+ -+ if (mEndShifted) { -+ // AdjustOffsets added a trailing character. -+ -+ MOZ_ASSERT(aStr.Length() > 0, "There should be a trailing character"); -+ -+ int trail = -1; -+ // Find beginning of last character. -+ for (trail = aStr.Length() - 1; trail >= 0; trail--) { -+ if (!UTF8traits::isInSeq(aStr.CharAt(trail))) { -+ break; -+ } -+ } -+ MOZ_ASSERT(trail >= 0, -+ "There should be at least a whole trailing character"); -+ MOZ_ASSERT(trail + UTF8traits::bytes(aStr.CharAt(trail)) == static_cast(aStr.Length()), -+ "The trailing character should be complete"); -+ -+ // Drop the last character. -+ aStr.Truncate(trail); -+ } -+ -+ // copy and return, libspi will free it -+ return g_strdup(aStr.get() + skip); -+} -+ -+gchar* -+ATKStringConverterHelper::ConvertAdjusted(const nsAString& aStr) -+{ -+ MOZ_ASSERT(mAdjusted, "DOMtoATK::ATKStringConverterHelper::AdjustOffsets needs to be called before ATKStringConverterHelper::ConvertAdjusted"); -+ -+ NS_ConvertUTF16toUTF8 cautoStr(aStr); -+ if (!cautoStr.get()) { -+ return nullptr; -+ } -+ -+ nsAutoCString cautoStrBOMs; -+ AddBOMs(cautoStrBOMs, cautoStr); -+ return FinishUTF16toUTF8(cautoStrBOMs); -+} -+ -+gchar* -+Convert(const nsAString& aStr) -+{ -+ NS_ConvertUTF16toUTF8 cautoStr(aStr); -+ if (!cautoStr.get()) { -+ return nullptr; -+ } -+ -+ nsAutoCString cautoStrBOMs; -+ AddBOMs(cautoStrBOMs, cautoStr); -+ return g_strdup(cautoStrBOMs.get()); -+} -+ -+void -+ConvertTexttoAsterisks(nsAString& aString) -+{ -+ for (uint32_t i = 0; i < aString.Length(); i++) { -+ aString.ReplaceLiteral(i, 1, u"*"); -+ } -+} -+ -+} -+ -+} // namespace a11y -+} // namespace mozilla -diff --git accessible/atk/DOMtoATK.h accessible/atk/DOMtoATK.h -new file mode 100644 -index 000000000000..1f1b125ebbbe ---- /dev/null -+++ accessible/atk/DOMtoATK.h -@@ -0,0 +1,163 @@ -+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#include "AccessibleWrap.h" -+#include "nsString.h" -+#include "nsMai.h" -+ -+/** -+ * ATK offsets are counted in unicode codepoints, while DOM offsets are counted -+ * in UTF-16 code units. That makes a difference for non-BMP characters, -+ * which need two UTF-16 code units to be represented (a pair of surrogates), -+ * while they are just one unicode character. -+ * -+ * To keep synchronization between ATK offsets (unicode codepoints) and DOM -+ * offsets (UTF-16 code units), after translation from UTF-16 to UTF-8 we add a -+ * BOM after each non-BMP character (which would otherwise use 2 UTF-16 -+ * code units for only 1 unicode codepoint). -+ * -+ * BOMs (Byte Order Marks, U+FEFF, also known as ZERO WIDTH NO-BREAK SPACE, but -+ * that usage is deprecated) normally only appear at the beginning of unicode -+ * files, but their occurrence within text (notably after cut&paste) is not -+ * uncommon, and are thus considered as non-text. -+ * -+ * Since the selection requested through ATK may not contain both surrogates -+ * at the ends of the selection, we need to fetch one UTF-16 code point more -+ * on both side, and get rid of it before returning the string to ATK. The -+ * ATKStringConverterHelper class maintains this, NewATKString should be used -+ * to call it properly. -+ * -+ * In the end, -+ * - if the start is between the high and low surrogates, the UTF-8 result -+ * includes a BOM from it but not the character -+ * - if the end is between the high and low surrogates, the UTF-8 result -+ * includes the character but *not* the BOM -+ * - all non-BMP characters that are fully in the string are in the UTF-8 result -+ * as character followed by BOM -+ */ -+namespace mozilla { -+namespace a11y { -+ -+namespace DOMtoATK -+{ -+ -+ /** -+ * Converts a string of accessible text into ATK gchar* string (by adding -+ * BOMs). This can be used when offsets do not need to be adjusted because -+ * ends of the string can not fall between surrogates. -+ */ -+ gchar* Convert(const nsAString& aStr); -+ -+ /** -+ * Add a BOM after each non-BMP character. -+ */ -+ void AddBOMs(nsACString& aDest, const nsACString& aSource); -+ -+ /** -+ * Replace all characters with asterisks (e.g. for password fields). -+ */ -+ void ConvertTexttoAsterisks(nsAString& aString); -+ -+ /** -+ * Parameterize conversion. -+ */ -+ enum class AtkStringConvertFlags : uint32_t { -+ None = 0, -+ ConvertTextToAsterisks = 1 << 0, -+ }; -+ -+ MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(AtkStringConvertFlags) -+ -+ class ATKStringConverterHelper { -+ public: -+ ATKStringConverterHelper(void) : -+#ifdef DEBUG -+ mAdjusted (false), -+#endif -+ mStartShifted (false), -+ mEndShifted (false) { } -+ -+ /** -+ * In order to properly get non-BMP values, offsets need to be changed -+ * to get one character more on each end, so that ConvertUTF16toUTF8 can -+ * convert surrogates even if the originally requested offsets fall between -+ * them. -+ */ -+ void AdjustOffsets(gint* aStartOffset, gint* aEndOffset, gint count); -+ -+ /** -+ * Converts a string of accessible text with adjusted offsets into ATK -+ * gchar* string (by adding BOMs). Note, AdjustOffsets has to be called -+ * before getting the text passed to this. -+ */ -+ gchar* ConvertAdjusted(const nsAString& aStr); -+ -+ private: -+ /** -+ * Remove the additional characters requested by PrepareUTF16toUTF8. -+ */ -+ gchar* FinishUTF16toUTF8(nsCString& aStr); -+ -+#ifdef DEBUG -+ bool mAdjusted; -+#endif -+ bool mStartShifted; -+ bool mEndShifted; -+ }; -+ -+ /** -+ * Get text from aAccessible, using ATKStringConverterHelper to properly -+ * introduce appropriate BOMs. -+ */ -+ template -+ gchar* NewATKString(AccessibleOrProxy* aAccessible, -+ gint aStartOffset, gint aEndOffset, -+ AtkStringConvertFlags aFlags) -+ { -+ gint startOffset = aStartOffset, endOffset = aEndOffset; -+ ATKStringConverterHelper converter; -+ converter.AdjustOffsets(&startOffset, &endOffset, -+ gint(aAccessible->CharacterCount())); -+ nsAutoString str; -+ aAccessible->TextSubstring(startOffset, endOffset, str); -+ if (aFlags & AtkStringConvertFlags::ConvertTextToAsterisks) -+ ConvertTexttoAsterisks(str); -+ return converter.ConvertAdjusted(str); -+ } -+ -+ /** -+ * Get a character from aAccessible, fetching more data as appropriate to -+ * properly get non-BMP characters or a BOM as appropriate. -+ */ -+ template -+ gunichar ATKCharacter(AccessibleCharAt* aAccessible, gint aOffset) -+ { -+ // char16_t is unsigned short in Mozilla, gnuichar is guint32 in glib. -+ gunichar character = static_cast(aAccessible->CharAt(aOffset)); -+ -+ if (NS_IS_LOW_SURROGATE(character)) { -+ // Trailing surrogate, return BOM instead. -+ return 0xFEFF; -+ } -+ -+ if (NS_IS_HIGH_SURROGATE(character)) { -+ // Heading surrogate, get the trailing surrogate and combine them. -+ gunichar characterLow = static_cast(aAccessible->CharAt(aOffset + 1)); -+ -+ if (!NS_IS_LOW_SURROGATE(characterLow)) { -+ // It should have been a trailing surrogate... Flag the error. -+ return 0xFFFD; -+ } -+ return SURROGATE_TO_UCS4(character, characterLow); -+ } -+ -+ return character; -+ } -+ -+} -+ -+} // namespace a11y -+} // namespace mozilla -diff --git accessible/atk/moz.build accessible/atk/moz.build -index baf71c6656b5..19b94bcca723 100644 ---- accessible/atk/moz.build -+++ accessible/atk/moz.build -@@ -14,6 +14,7 @@ SOURCES += [ - 'ApplicationAccessibleWrap.cpp', - 'AtkSocketAccessible.cpp', - 'DocAccessibleWrap.cpp', -+ 'DOMtoATK.cpp', - 'nsMaiHyperlink.cpp', - 'nsMaiInterfaceAction.cpp', - 'nsMaiInterfaceComponent.cpp', -diff --git accessible/atk/nsMaiInterfaceText.cpp accessible/atk/nsMaiInterfaceText.cpp -index d8c162855343..0c723279046e 100644 ---- accessible/atk/nsMaiInterfaceText.cpp -+++ accessible/atk/nsMaiInterfaceText.cpp -@@ -14,9 +14,12 @@ - #include "nsIAccessibleTypes.h" - #include "nsIPersistentProperties2.h" - #include "nsISimpleEnumerator.h" -+#include "nsUTF8Utils.h" - - #include "mozilla/Likely.h" - -+#include "DOMtoATK.h" -+ - using namespace mozilla; - using namespace mozilla::a11y; - -@@ -128,8 +131,7 @@ ConvertTexttoAsterisks(AccessibleWrap* accWrap, nsAString& aString) - { - // convert each char to "*" when it's "password text" - if (accWrap->NativeRole() == roles::PASSWORD_TEXT) { -- for (uint32_t i = 0; i < aString.Length(); i++) -- aString.Replace(i, 1, NS_LITERAL_STRING("*")); -+ DOMtoATK::ConvertTexttoAsterisks(aString); - } - } - -@@ -142,20 +144,20 @@ getTextCB(AtkText *aText, gint aStartOffset, gint aEndOffset) - nsAutoString autoStr; - if (accWrap) { - HyperTextAccessible* text = accWrap->AsHyperText(); -- if (!text || !text->IsTextRole()) -+ if (!text || !text->IsTextRole() || text->IsDefunct()) - return nullptr; - -- text->TextSubstring(aStartOffset, aEndOffset, autoStr); -+ return DOMtoATK::NewATKString(text, aStartOffset, aEndOffset, -+ accWrap->NativeRole() == roles::PASSWORD_TEXT ? -+ DOMtoATK::AtkStringConvertFlags::ConvertTextToAsterisks : -+ DOMtoATK::AtkStringConvertFlags::None); - -- ConvertTexttoAsterisks(accWrap, autoStr); - } else if (ProxyAccessible* proxy = GetProxy(ATK_OBJECT(aText))) { -- proxy->TextSubstring(aStartOffset, aEndOffset, autoStr); -+ return DOMtoATK::NewATKString(proxy, aStartOffset, aEndOffset, -+ DOMtoATK::AtkStringConvertFlags::None); - } - -- NS_ConvertUTF16toUTF8 cautoStr(autoStr); -- -- //copy and return, libspi will free it. -- return (cautoStr.get()) ? g_strdup(cautoStr.get()) : nullptr; -+ return nullptr; - } - - static gchar* -@@ -181,8 +183,8 @@ getTextAfterOffsetCB(AtkText *aText, gint aOffset, - *aStartOffset = startOffset; - *aEndOffset = endOffset; - -- NS_ConvertUTF16toUTF8 cautoStr(autoStr); -- return (cautoStr.get()) ? g_strdup(cautoStr.get()) : nullptr; -+ // libspi will free it. -+ return DOMtoATK::Convert(autoStr); - } - - static gchar* -@@ -208,8 +210,8 @@ getTextAtOffsetCB(AtkText *aText, gint aOffset, - *aStartOffset = startOffset; - *aEndOffset = endOffset; - -- NS_ConvertUTF16toUTF8 cautoStr(autoStr); -- return (cautoStr.get()) ? g_strdup(cautoStr.get()) : nullptr; -+ // libspi will free it. -+ return DOMtoATK::Convert(autoStr); - } - - static gunichar -@@ -221,13 +223,11 @@ getCharacterAtOffsetCB(AtkText* aText, gint aOffset) - if (!text || !text->IsTextRole()) { - return 0; - } -- -- // char16_t is unsigned short in Mozilla, gnuichar is guint32 in glib. -- return static_cast(text->CharAt(aOffset)); -+ return DOMtoATK::ATKCharacter(text, aOffset); - } - - if (ProxyAccessible* proxy = GetProxy(ATK_OBJECT(aText))) { -- return static_cast(proxy->CharAt(aOffset)); -+ return DOMtoATK::ATKCharacter(proxy, aOffset); - } - - return 0; -@@ -257,8 +257,8 @@ getTextBeforeOffsetCB(AtkText *aText, gint aOffset, - *aStartOffset = startOffset; - *aEndOffset = endOffset; - -- NS_ConvertUTF16toUTF8 cautoStr(autoStr); -- return (cautoStr.get()) ? g_strdup(cautoStr.get()) : nullptr; -+ // libspi will free it. -+ return DOMtoATK::Convert(autoStr); - } - - static gint -diff --git xpcom/string/nsUTF8Utils.h xpcom/string/nsUTF8Utils.h -index ef140084c2e6..5d39b05e799a 100644 ---- xpcom/string/nsUTF8Utils.h -+++ xpcom/string/nsUTF8Utils.h -@@ -56,6 +56,30 @@ public: - { - return (aChar & 0xFE) == 0xFC; - } -+ // return the number of bytes in a sequence beginning with aChar -+ static int bytes(char aChar) -+ { -+ if (isASCII(aChar)) { -+ return 1; -+ } -+ if (is2byte(aChar)) { -+ return 2; -+ } -+ if (is3byte(aChar)) { -+ return 3; -+ } -+ if (is4byte(aChar)) { -+ return 4; -+ } -+ if (is5byte(aChar)) { -+ return 5; -+ } -+ if (is6byte(aChar)) { -+ return 6; -+ } -+ MOZ_ASSERT_UNREACHABLE("should not be used for in-sequence characters"); -+ return 1; -+ } - }; - - /** diff --git a/www/waterfox/files/patch-bug1347984 b/www/waterfox/files/patch-bug1347984 deleted file mode 100644 index fa976288d452..000000000000 --- a/www/waterfox/files/patch-bug1347984 +++ /dev/null @@ -1,96 +0,0 @@ -commit d40956eaa7d8 -Author: Jan de Mooij -Date: Fri Oct 6 20:11:07 2017 +0200 - - Bug 1347984 - Check for dead object proxies in TriggerPromiseReactions. r=till, a=ritu - - --HG-- - extra : source : 754a3e12321c8656a83759adf297e61b0e188368 ---- - js/src/builtin/Promise.cpp | 6 +++++- - js/src/jit-test/tests/basic/bug908915.js | 1 + - js/src/jit-test/tests/promise/bug1347984.js | 6 ++++++ - js/src/shell/js.cpp | 21 +++++++++++++++++++++ - 4 files changed, 33 insertions(+), 1 deletion(-) - -diff --git js/src/builtin/Promise.cpp js/src/builtin/Promise.cpp -index 2462f1f07853..1cb1cff0682e 100644 ---- js/src/builtin/Promise.cpp -+++ js/src/builtin/Promise.cpp -@@ -1017,8 +1017,12 @@ TriggerPromiseReactions(JSContext* cx, HandleValue reactionsVal, JS::PromiseStat - RootedObject reactions(cx, &reactionsVal.toObject()); - RootedObject reaction(cx); - -- if (reactions->is() || IsWrapper(reactions)) -+ if (reactions->is() || -+ IsWrapper(reactions) || -+ JS_IsDeadWrapper(reactions)) -+ { - return EnqueuePromiseReactionJob(cx, reactions, valueOrReason, state); -+ } - - RootedNativeObject reactionsList(cx, &reactions->as()); - size_t reactionsCount = reactionsList->getDenseInitializedLength(); -diff --git js/src/jit-test/tests/basic/bug908915.js js/src/jit-test/tests/basic/bug908915.js -index 5077801b1b67..f0213296e769 100644 ---- js/src/jit-test/tests/basic/bug908915.js -+++ js/src/jit-test/tests/basic/bug908915.js -@@ -11,6 +11,7 @@ var blacklist = { - 'readline': true, - 'terminate': true, - 'nestedShell': true, -+ 'nukeAllCCWs': true, - }; - - function f(y) {} -diff --git js/src/jit-test/tests/promise/bug1347984.js js/src/jit-test/tests/promise/bug1347984.js -new file mode 100644 -index 000000000000..5fc458cd452e ---- /dev/null -+++ js/src/jit-test/tests/promise/bug1347984.js -@@ -0,0 +1,6 @@ -+// |jit-test| error:dead object -+var g = newGlobal(); -+var p = new Promise(() => {}); -+g.Promise.prototype.then.call(p, () => void 0); -+g.eval("nukeAllCCWs()"); -+resolvePromise(p, 9); -diff --git js/src/shell/js.cpp js/src/shell/js.cpp -index 2bb7e97120a7..8e9aee7c854a 100644 ---- js/src/shell/js.cpp -+++ js/src/shell/js.cpp -@@ -5049,6 +5049,23 @@ NukeCCW(JSContext* cx, unsigned argc, Value* vp) - return true; - } - -+static bool -+NukeAllCCWs(JSContext* cx, unsigned argc, Value* vp) -+{ -+ CallArgs args = CallArgsFromVp(argc, vp); -+ -+ if (args.length() != 0) { -+ JS_ReportErrorNumberASCII(cx, my_GetErrorMessage, nullptr, JSSMSG_INVALID_ARGS, -+ "nukeAllCCWs"); -+ return false; -+ } -+ -+ NukeCrossCompartmentWrappers(cx, AllCompartments(), cx->compartment(), -+ NukeWindowReferences, NukeAllReferences); -+ args.rval().setUndefined(); -+ return true; -+} -+ - static bool - GetMaxArgs(JSContext* cx, unsigned argc, Value* vp) - { -@@ -6552,6 +6569,10 @@ static const JSFunctionSpecWithHelp shell_functions[] = { - "nukeCCW(wrapper)", - " Nuke a CrossCompartmentWrapper, which turns it into a DeadProxyObject."), - -+ JS_FN_HELP("nukeAllCCWs", NukeAllCCWs, 0, 0, -+"nukeAllCCWs()", -+" Like nukeCCW, but for all CrossCompartmentWrappers targeting the current compartment."), -+ - JS_FN_HELP("createMappedArrayBuffer", CreateMappedArrayBuffer, 1, 0, - "createMappedArrayBuffer(filename, [offset, [size]])", - " Create an array buffer that mmaps the given file."), diff --git a/www/waterfox/files/patch-bug1352453 b/www/waterfox/files/patch-bug1352453 deleted file mode 100644 index 87630d5510d2..000000000000 --- a/www/waterfox/files/patch-bug1352453 +++ /dev/null @@ -1,27 +0,0 @@ -commit 96ac0874dc2e -Author: Ethan Lin -Date: Sat Sep 23 15:06:07 2017 +0800 - - Bug 1352453 - Check image dimension when computing border space size. r=heycam, a=sledru - - MozReview-Commit-ID: LQcf9UGyUUq - - --HG-- - extra : source : 6974ff079df11b3e7dc46e2df754149321e3f3aa ---- - layout/painting/nsCSSRendering.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git layout/painting/nsCSSRendering.cpp layout/painting/nsCSSRendering.cpp -index 89760f33229b..55051c9ac376 100644 ---- layout/painting/nsCSSRendering.cpp -+++ layout/painting/nsCSSRendering.cpp -@@ -3068,7 +3068,7 @@ nsCSSRendering::ComputeBorderSpacedRepeatSize(nscoord aImageDimension, - nscoord aAvailableSpace, - nscoord& aSpace) - { -- int32_t count = aAvailableSpace / aImageDimension; -+ int32_t count = aImageDimension ? (aAvailableSpace / aImageDimension) : 0; - aSpace = (aAvailableSpace - aImageDimension * count) / (count + 1); - return aSpace + aImageDimension; - } diff --git a/www/waterfox/files/patch-bug1355576 b/www/waterfox/files/patch-bug1355576 deleted file mode 100644 index cc9c8236a2b4..000000000000 --- a/www/waterfox/files/patch-bug1355576 +++ /dev/null @@ -1,262 +0,0 @@ -commit e530ba4d4394 -Author: Thomas Wisniewski -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/waterfox/files/patch-bug1356854 b/www/waterfox/files/patch-bug1356854 deleted file mode 100644 index 013cb6fac559..000000000000 --- a/www/waterfox/files/patch-bug1356854 +++ /dev/null @@ -1,28 +0,0 @@ -commit 6435e5f65538 -Author: Thomas Nguyen -Date: Thu Sep 21 16:39:36 2017 +0800 - - Bug 1356854 - Check mFD is not null before PR_Write. r=mcmanus, a=ritu - - MozReview-Commit-ID: INoTUvPpPrs - - --HG-- - extra : source : 638f326530b719ce386bb5d1701fed4ae4604690 ---- - netwerk/base/nsFileStreams.cpp | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git netwerk/base/nsFileStreams.cpp netwerk/base/nsFileStreams.cpp -index ac259c1c7e94..6be501456656 100644 ---- netwerk/base/nsFileStreams.cpp -+++ netwerk/base/nsFileStreams.cpp -@@ -378,6 +378,9 @@ nsFileStreamBase::DoPendingOpen() - - case eOpened: - MOZ_ASSERT(mFD); -+ if (NS_WARN_IF(!mFD)) { -+ return NS_ERROR_FAILURE; -+ } - return NS_OK; - - case eClosed: diff --git a/www/waterfox/files/patch-bug1357523 b/www/waterfox/files/patch-bug1357523 deleted file mode 100644 index 32d453e9e3b7..000000000000 --- a/www/waterfox/files/patch-bug1357523 +++ /dev/null @@ -1,96 +0,0 @@ -commit ad103dfd3abe -Author: Prathiksha -Date: Fri Sep 15 22:08:12 2017 +0530 - - Bug 1357523 - Make about:home and about:newtab search box search for the value in the search textbox when we use non-default search engines. r=nhnt11, a=ritu - - MozReview-Commit-ID: CdgqghkmXau - - --HG-- - extra : source : e029590936c56ac269d68610ab389ab25887b6e1 ---- - browser/base/content/contentSearchUI.js | 2 ++ - .../test/general/browser_contentSearchUI.js | 30 +++++----------------- - 2 files changed, 9 insertions(+), 23 deletions(-) - -diff --git browser/base/content/contentSearchUI.js browser/base/content/contentSearchUI.js -index bacb985fb6ee..ffada60c3571 100644 ---- browser/base/content/contentSearchUI.js -+++ browser/base/content/contentSearchUI.js -@@ -478,6 +478,8 @@ ContentSearchUIController.prototype = { - _onMousemove(event) { - let idx = this._indexOfTableItem(event.target); - if (idx >= this.numSuggestions) { -+ // Deselect any search suggestion that has been selected. -+ this.selectedIndex = -1; - this.selectedButtonIndex = idx - this.numSuggestions; - return; - } -diff --git browser/base/content/test/general/browser_contentSearchUI.js browser/base/content/test/general/browser_contentSearchUI.js -index 51538b29e27f..85b65d40bf0b 100644 ---- browser/base/content/test/general/browser_contentSearchUI.js -+++ browser/base/content/test/general/browser_contentSearchUI.js -@@ -300,13 +300,13 @@ add_task(async function mouse() { - checkState(state, "x", ["xfoo", "xbar"], 1); - - state = await msg("mousemove", 2); -- checkState(state, "x", ["xfoo", "xbar"], 1, 0); -+ checkState(state, "x", ["xfoo", "xbar"], 2, 0); - - state = await msg("mousemove", 3); -- checkState(state, "x", ["xfoo", "xbar"], 1, 1); -+ checkState(state, "x", ["xfoo", "xbar"], 3, 1); - - state = await msg("mousemove", -1); -- checkState(state, "x", ["xfoo", "xbar"], 1); -+ checkState(state, "x", ["xfoo", "xbar"], -1); - - await msg("reset"); - await setUp(); -@@ -318,10 +318,10 @@ add_task(async function mouse() { - checkState(state, "x", ["xfoo", "xbar"], 0); - - state = await msg("mousemove", 2); -- checkState(state, "x", ["xfoo", "xbar"], 0, 0); -+ checkState(state, "x", ["xfoo", "xbar"], 2, 0); - - state = await msg("mousemove", -1); -- checkState(state, "x", ["xfoo", "xbar"], 0); -+ checkState(state, "x", ["xfoo", "xbar"], -1); - - await msg("reset"); - }); -@@ -510,24 +510,7 @@ add_task(async function search() { - await setUp(); - - // Test selecting a suggestion, then clicking a one-off without deselecting the -- // suggestion. -- await msg("key", { key: "x", waitForSuggestions: true }); -- p = msg("waitForSearch"); -- await msg("mousemove", 1); -- await msg("mousemove", 3); -- await msg("click", { eltIdx: 3, modifiers }); -- mesg = await p; -- eventData.searchString = "xfoo" -- eventData.selection = { -- index: 1, -- kind: "mouse", -- }; -- SimpleTest.isDeeply(eventData, mesg, "Search event data"); -- -- await promiseTab(); -- await setUp(); -- -- // Same as above, but with the keyboard. -+ // suggestion, using the keyboard. - delete modifiers.button; - await msg("key", { key: "x", waitForSuggestions: true }); - p = msg("waitForSearch"); -@@ -536,6 +519,7 @@ add_task(async function search() { - await msg("key", "VK_TAB"); - await msg("key", { key: "VK_RETURN", modifiers }); - mesg = await p; -+ eventData.searchString = "xfoo"; - eventData.selection = { - index: 1, - kind: "key", diff --git a/www/waterfox/files/patch-bug1360278 b/www/waterfox/files/patch-bug1360278 deleted file mode 100644 index 75e49f92f346..000000000000 --- a/www/waterfox/files/patch-bug1360278 +++ /dev/null @@ -1,184 +0,0 @@ -commit 5d127ad3bd50 -Author: Robin Grenet -Date: Thu Nov 16 13:35:58 2017 +0100 - - Bug 1360278 - Add preference to trigger context menu on mouse up for GTK+ and macOS, r=mstange,smaug a=gchang - - MozReview-Commit-ID: Bg60bD8jIg6 - - --HG-- - extra : source : f540f9e801cb2e0be5259baea13dfce953ccb520 ---- - modules/libpref/init/all.js | 4 ++++ - widget/cocoa/nsChildView.mm | 23 +++++++++++++++++++++-- - widget/gtk/nsWindow.cpp | 27 ++++++++++++++++++++------- - widget/gtk/nsWindow.h | 2 ++ - widget/nsBaseWidget.cpp | 16 ++++++++++++++++ - widget/nsBaseWidget.h | 6 ++++++ - 6 files changed, 69 insertions(+), 9 deletions(-) - -diff --git modules/libpref/init/all.js modules/libpref/init/all.js -index f9402630cf27..97ece9f13467 100644 ---- modules/libpref/init/all.js -+++ modules/libpref/init/all.js -@@ -234,6 +234,10 @@ pref("browser.sessionhistory.max_total_viewers", -1); - - pref("ui.use_native_colors", true); - pref("ui.click_hold_context_menus", false); -+ -+// Pop up context menu on mouseup instead of mousedown, if that's the OS default. -+// Note: ignored on Windows (context menus always use mouseup) -+pref("ui.context_menus.after_mouseup", false); - // Duration of timeout of incremental search in menus (ms). 0 means infinite. - pref("ui.menu.incremental_search.timeout", 1000); - // If true, all popups won't hide automatically on blur -diff --git widget/cocoa/nsChildView.mm widget/cocoa/nsChildView.mm -index cac897327a19..bf42b4f8c095 100644 ---- widget/cocoa/nsChildView.mm -+++ widget/cocoa/nsChildView.mm -@@ -4700,8 +4700,10 @@ NSEvent* gLastDragMouseDownEvent = nil; - if (!mGeckoChild) - return; - -- // Let the superclass do the context menu stuff. -- [super rightMouseDown:theEvent]; -+ if (!nsBaseWidget::ShowContextMenuAfterMouseUp()) { -+ // Let the superclass do the context menu stuff. -+ [super rightMouseDown:theEvent]; -+ } - - NS_OBJC_END_TRY_ABORT_BLOCK; - } -@@ -4724,6 +4726,23 @@ NSEvent* gLastDragMouseDownEvent = nil; - - nsAutoRetainCocoaObject kungFuDeathGrip(self); - mGeckoChild->DispatchInputEvent(&geckoEvent); -+ if (!mGeckoChild) -+ return; -+ -+ if (nsBaseWidget::ShowContextMenuAfterMouseUp()) { -+ // Let the superclass do the context menu stuff, but pretend it's rightMouseDown. -+ NSEvent *dupeEvent = [NSEvent mouseEventWithType:NSRightMouseDown -+ location:theEvent.locationInWindow -+ modifierFlags:theEvent.modifierFlags -+ timestamp:theEvent.timestamp -+ windowNumber:theEvent.windowNumber -+ context:theEvent.context -+ eventNumber:theEvent.eventNumber -+ clickCount:theEvent.clickCount -+ pressure:theEvent.pressure]; -+ -+ [super rightMouseDown:dupeEvent]; -+ } - - NS_OBJC_END_TRY_ABORT_BLOCK; - } -diff --git widget/gtk/nsWindow.cpp widget/gtk/nsWindow.cpp -index c3da6dc00b0c..c220d0bb2192 100644 ---- widget/gtk/nsWindow.cpp -+++ widget/gtk/nsWindow.cpp -@@ -2737,6 +2737,19 @@ static guint ButtonMaskFromGDKButton(guint button) - return GDK_BUTTON1_MASK << (button - 1); - } - -+void -+nsWindow::DispatchContextMenuEventFromMouseEvent(uint16_t domButton, -+ GdkEventButton *aEvent) -+{ -+ if (domButton == WidgetMouseEvent::eRightButton && MOZ_LIKELY(!mIsDestroyed)) { -+ WidgetMouseEvent contextMenuEvent(true, eContextMenu, this, -+ WidgetMouseEvent::eReal); -+ InitButtonEvent(contextMenuEvent, aEvent); -+ contextMenuEvent.pressure = mLastMotionPressure; -+ DispatchInputEvent(&contextMenuEvent); -+ } -+} -+ - void - nsWindow::OnButtonPressEvent(GdkEventButton *aEvent) - { -@@ -2806,13 +2819,8 @@ nsWindow::OnButtonPressEvent(GdkEventButton *aEvent) - DispatchInputEvent(&event); - - // right menu click on linux should also pop up a context menu -- if (domButton == WidgetMouseEvent::eRightButton && -- MOZ_LIKELY(!mIsDestroyed)) { -- WidgetMouseEvent contextMenuEvent(true, eContextMenu, this, -- WidgetMouseEvent::eReal); -- InitButtonEvent(contextMenuEvent, aEvent); -- contextMenuEvent.pressure = mLastMotionPressure; -- DispatchInputEvent(&contextMenuEvent); -+ if (!nsBaseWidget::ShowContextMenuAfterMouseUp()) { -+ DispatchContextMenuEventFromMouseEvent(domButton, aEvent); - } - } - -@@ -2848,6 +2856,11 @@ nsWindow::OnButtonReleaseEvent(GdkEventButton *aEvent) - - DispatchInputEvent(&event); - mLastMotionPressure = pressure; -+ -+ // right menu click on linux should also pop up a context menu -+ if (nsBaseWidget::ShowContextMenuAfterMouseUp()) { -+ DispatchContextMenuEventFromMouseEvent(domButton, aEvent); -+ } - } - - void -diff --git widget/gtk/nsWindow.h widget/gtk/nsWindow.h -index 0fafc8994579..7a28e3260c0f 100644 ---- widget/gtk/nsWindow.h -+++ widget/gtk/nsWindow.h -@@ -245,6 +245,8 @@ private: - - void UpdateClientOffset(); - -+ void DispatchContextMenuEventFromMouseEvent(uint16_t domButton, -+ GdkEventButton *aEvent); - public: - void ThemeChanged(void); - void OnDPIChanged(void); -diff --git widget/nsBaseWidget.cpp widget/nsBaseWidget.cpp -index c0694714c69d..4a1320fe23d5 100644 ---- widget/nsBaseWidget.cpp -+++ widget/nsBaseWidget.cpp -@@ -1218,6 +1218,22 @@ nsBaseWidget::DispatchEventToAPZOnly(mozilla::WidgetInputEvent* aEvent) - } - } - -+// static -+bool -+nsBaseWidget::ShowContextMenuAfterMouseUp() -+{ -+ static bool gContextMenuAfterMouseUp = false; -+ static bool gContextMenuAfterMouseUpCached = false; -+ if (!gContextMenuAfterMouseUpCached) { -+ Preferences::AddBoolVarCache(&gContextMenuAfterMouseUp, -+ "ui.context_menus.after_mouseup", -+ false); -+ -+ gContextMenuAfterMouseUpCached = true; -+ } -+ return gContextMenuAfterMouseUp; -+} -+ - nsIDocument* - nsBaseWidget::GetDocument() const - { -diff --git widget/nsBaseWidget.h widget/nsBaseWidget.h -index f4e8e3d78330..3cb56f38b6ce 100644 ---- widget/nsBaseWidget.h -+++ widget/nsBaseWidget.h -@@ -417,6 +417,12 @@ public: - void RecvScreenPixels(mozilla::ipc::Shmem&& aMem, const ScreenIntSize& aSize) override {}; - #endif - -+ /** -+ * Whether context menus should only appear on mouseup instead of mousedown, -+ * on OSes where they normally appear on mousedown (macOS, *nix). -+ */ -+ static bool ShowContextMenuAfterMouseUp(); -+ - protected: - // These are methods for CompositorWidgetWrapper, and should only be - // accessed from that class. Derived widgets can choose which methods to diff --git a/www/waterfox/files/patch-bug1360603 b/www/waterfox/files/patch-bug1360603 deleted file mode 100644 index b7e5e247a43a..000000000000 --- a/www/waterfox/files/patch-bug1360603 +++ /dev/null @@ -1,101 +0,0 @@ -commit b5d0a61cd5df -Author: Amy Chung -Date: Sun Sep 24 00:38:32 2017 +0800 - - Bug 1360603 - Mark the save channel as throttleable. r=baku, a=sledru - - --HG-- - extra : source : d409c2ac7d88b7193e8369aa3359a9368e1135b3 ---- - dom/webbrowserpersist/nsWebBrowserPersist.cpp | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git dom/webbrowserpersist/nsWebBrowserPersist.cpp dom/webbrowserpersist/nsWebBrowserPersist.cpp -index a9b37ed281ca..a5971216d8b4 100644 ---- dom/webbrowserpersist/nsWebBrowserPersist.cpp -+++ dom/webbrowserpersist/nsWebBrowserPersist.cpp -@@ -13,6 +13,7 @@ - #include "nsAutoPtr.h" - #include "nsNetCID.h" - #include "nsNetUtil.h" -+#include "nsIClassOfService.h" - #include "nsIInterfaceRequestorUtils.h" - #include "nsILoadContext.h" - #include "nsIPrivateBrowsingChannel.h" -@@ -1497,6 +1498,12 @@ nsresult nsWebBrowserPersist::SaveChannelInternal( - return StartUpload(bufferedInputStream, aFile, contentType); - } - -+ // Mark save channel as throttleable. -+ nsCOMPtr cos(do_QueryInterface(aChannel)); -+ if (cos) { -+ cos->AddClassFlags(nsIClassOfService::Throttleable); -+ } -+ - // Read from the input channel - nsresult rv = NS_MaybeOpenChannelUsingAsyncOpen2(aChannel, this); - if (rv == NS_ERROR_NO_CONTENT) -commit 1e11071bc4f9 -Author: Amy Chung -Date: Sun Sep 24 00:56:04 2017 +0800 - - Bug 1360603 - Confirm the Throttleable flag on browser_saveImageURL.js. r=baku, a=sledru - - --HG-- - extra : source : 6d7610f4d26d76878b83b1f2489a96116c2bdf15 ---- - toolkit/content/contentAreaUtils.js | 4 ++++ - toolkit/content/tests/browser/browser_saveImageURL.js | 18 ++++++++++++++++++ - 2 files changed, 22 insertions(+) - -diff --git toolkit/content/contentAreaUtils.js toolkit/content/contentAreaUtils.js -index fba70c91c8a3..1492b4c1654c 100644 ---- toolkit/content/contentAreaUtils.js -+++ toolkit/content/contentAreaUtils.js -@@ -1264,6 +1264,10 @@ function openURL(aURL) { - loadUsingSystemPrincipal: true - }); - -+ if (channel) { -+ channel.channelIsForDownload = true; -+ } -+ - var uriLoader = Components.classes["@mozilla.org/uriloader;1"] - .getService(Components.interfaces.nsIURILoader); - uriLoader.openURI(channel, -diff --git toolkit/content/tests/browser/browser_saveImageURL.js toolkit/content/tests/browser/browser_saveImageURL.js -index fe10482f35dc..0d9c872921c2 100644 ---- toolkit/content/tests/browser/browser_saveImageURL.js -+++ toolkit/content/tests/browser/browser_saveImageURL.js -@@ -37,6 +37,15 @@ add_task(async function preferred_API() { - }); - - saveImageURL(url, "image.jpg", null, true, false, null, null, null, null, false); -+ let channel = content.document.docShell.currentDocumentChannel; -+ if (channel) { -+ ok(true, channel.QueryInterface(Ci.nsIHttpChannelInternal) -+ .channelIsForDownload); -+ -+ // Throttleable is the only class flag assigned to downloads. -+ ok(channel.QueryInterface(Ci.nsIClassOfService).classFlags, -+ Ci.nsIClassOfService.Throttleable); -+ } - await waitForFilePicker(); - }); - }); -@@ -64,6 +73,15 @@ add_task(async function deprecated_API() { - // pass the XUL document instead to test this interface. - let doc = document; - -+ let channel = content.document.docShell.currentDocumentChannel; -+ if (channel) { -+ ok(true, channel.QueryInterface(Ci.nsIHttpChannelInternal) -+ .channelIsForDownload); -+ -+ // Throttleable is the only class flag assigned to downloads. -+ ok(channel.QueryInterface(Ci.nsIClassOfService).classFlags, -+ Ci.nsIClassOfService.Throttleable); -+ } - saveImageURL(url, "image.jpg", null, true, false, null, doc, null, null); - await waitForFilePicker(); - }); diff --git a/www/waterfox/files/patch-bug1363038 b/www/waterfox/files/patch-bug1363038 deleted file mode 100644 index 5f8465966d55..000000000000 --- a/www/waterfox/files/patch-bug1363038 +++ /dev/null @@ -1,68 +0,0 @@ -commit 9d1887c28c05 -Author: Thomas Nguyen -Date: Tue Aug 22 14:51:44 2017 +0800 - - Bug 1363038 - Remove synchronous dispatch when worker is racing against shutdown r=hchang - - MozReview-Commit-ID: JOkOukz1fov - - --HG-- - extra : rebase_source : 9e4204cebcd4615078019a51818250ff8125efe1 ---- - .../url-classifier/nsUrlClassifierDBService.cpp | 21 ++++++++------------- - .../url-classifier/nsUrlClassifierDBService.h | 3 +++ - 2 files changed, 11 insertions(+), 13 deletions(-) - -diff --git toolkit/components/url-classifier/nsUrlClassifierDBService.cpp toolkit/components/url-classifier/nsUrlClassifierDBService.cpp -index 3f7e3c8daaac..074bfc583b93 100644 ---- toolkit/components/url-classifier/nsUrlClassifierDBService.cpp -+++ toolkit/components/url-classifier/nsUrlClassifierDBService.cpp -@@ -1616,12 +1616,6 @@ nsUrlClassifierDBService::Init() - ReadTablesFromPrefs(); - nsresult rv; - -- { -- // Force PSM loading on main thread -- nsCOMPtr dummy = do_CreateInstance(NS_CRYPTO_HASH_CONTRACTID, &rv); -- NS_ENSURE_SUCCESS(rv, rv); -- } -- - { - // Force nsIUrlClassifierUtils loading on main thread. - nsCOMPtr dummy = -@@ -2278,13 +2272,14 @@ nsUrlClassifierDBService::Shutdown() - // is to avoid racing for Classifier::mUpdateThread - // between main thread and the worker thread. (Both threads - // would access Classifier::mUpdateThread.) -- using Worker = nsUrlClassifierDBServiceWorker; -- RefPtr r = NewRunnableMethod( -- "nsUrlClassifierDBServiceWorker::FlushAndDisableAsyncUpdate", -- mWorker, -- &Worker::FlushAndDisableAsyncUpdate); -- SyncRunnable::DispatchToThread(gDbBackgroundThread, r); -- -+ if (mWorker->IsDBOpened()) { -+ using Worker = nsUrlClassifierDBServiceWorker; -+ RefPtr r = NewRunnableMethod( -+ "nsUrlClassifierDBServiceWorker::FlushAndDisableAsyncUpdate", -+ mWorker, -+ &Worker::FlushAndDisableAsyncUpdate); -+ SyncRunnable::DispatchToThread(gDbBackgroundThread, r); -+ } - // At this point the update thread has been shut down and - // the worker thread should only have at most one event, - // which is the callback event. -diff --git toolkit/components/url-classifier/nsUrlClassifierDBService.h toolkit/components/url-classifier/nsUrlClassifierDBService.h -index 13987b0ed2ee..8d284f5b0842 100644 ---- toolkit/components/url-classifier/nsUrlClassifierDBService.h -+++ toolkit/components/url-classifier/nsUrlClassifierDBService.h -@@ -227,6 +227,9 @@ public: - // will be nulled out in NotifyUpdateObserver. - bool IsBusyUpdating() const { return !!mUpdateObserver; } - -+ // Check the DB ready state of the worker thread -+ bool IsDBOpened() const { return !!mClassifier; } -+ - // Delegate Classifier to disable async update. If there is an - // ongoing update on the update thread, we will be blocked until - // the background update is done and callback is fired. diff --git a/www/waterfox/files/patch-bug1370508 b/www/waterfox/files/patch-bug1370508 deleted file mode 100644 index 3f5ffc992a6c..000000000000 --- a/www/waterfox/files/patch-bug1370508 +++ /dev/null @@ -1,79 +0,0 @@ -commit c40f44ef9b35 -Author: Xidorn Quan -Date: Wed Aug 9 19:57:33 2017 +1000 - - Bug 1370508 - Enable stylo on generic XML documents. r=heycam - - MozReview-Commit-ID: 4XQ9RPQ7oa1 - - --HG-- - extra : rebase_source : 74e411e2280e818fc1fbd2efda677565cfa2f8b6 ---- - dom/base/nsDocument.cpp | 3 +-- - layout/reftests/w3c-css/failures.list | 4 ++++ - layout/reftests/w3c-css/received/reftest.list | 2 +- - layout/xul/crashtests/crashtests.list | 2 +- - testing/web-platform/meta/css/css-namespaces-3/syntax-013.xml.ini | 4 ++++ - 5 files changed, 11 insertions(+), 4 deletions(-) - -diff --git dom/base/nsDocument.cpp dom/base/nsDocument.cpp -index 2a01e6ec3a67..66a860ff3257 100644 ---- dom/base/nsDocument.cpp -+++ dom/base/nsDocument.cpp -@@ -13293,8 +13293,7 @@ nsIDocument::UpdateStyleBackendType() - mStyleBackendType = StyleBackendType::Servo; - } else if (!mDocumentContainer) { - NS_WARNING("stylo: No docshell yet, assuming Gecko style system"); -- } else if ((IsHTMLOrXHTML() || IsSVGDocument()) && -- IsContentDocument()) { -+ } else if (!IsXULDocument() && IsContentDocument()) { - // Disable stylo for about: pages other than about:blank, since - // they tend to use unsupported selectors like XUL tree pseudos. - bool isAbout = false; -diff --git layout/reftests/w3c-css/failures.list layout/reftests/w3c-css/failures.list -index 966f69ff9ae0..1560f4ad673d 100644 ---- layout/reftests/w3c-css/failures.list -+++ layout/reftests/w3c-css/failures.list -@@ -314,3 +314,7 @@ fuzzy(255,2808) css-multicol-1/multicol-rule-large-001.xht - fails-if(!styloVsGecko) css-multicol-1/multicol-fill-auto-block-children-001.xht - fails-if(!styloVsGecko) css-multicol-1/multicol-fill-auto-block-children-002.xht - fails-if(!styloVsGecko) css-multicol-1/multicol-span-all-block-sibling-003.xht -+ -+#### CSS Namespaces 3 ############################################## -+ -+fails-if(stylo||styloVsGecko) css-namespaces-3/syntax-013.xml -diff --git layout/reftests/w3c-css/received/reftest.list layout/reftests/w3c-css/received/reftest.list -index eb6151266acd..128d1fcf8121 100644 ---- layout/reftests/w3c-css/received/reftest.list -+++ layout/reftests/w3c-css/received/reftest.list -@@ -205,7 +205,7 @@ fails-if(!styloVsGecko) == css-multicol-1/multicol-zero-height-001.xht css-multi - == css-namespaces-3/syntax-010.xml css-namespaces-3/reftest/ref-lime-3.xml - == css-namespaces-3/syntax-011.xml css-namespaces-3/reftest/ref-lime-6.xml - == css-namespaces-3/syntax-012.xml css-namespaces-3/reftest/ref-lime-3.xml --== css-namespaces-3/syntax-013.xml css-namespaces-3/reftest/ref-lime-5.xml -+fails-if(stylo||styloVsGecko) == css-namespaces-3/syntax-013.xml css-namespaces-3/reftest/ref-lime-5.xml # bug 1388911 - == css-namespaces-3/syntax-014.xml css-namespaces-3/reftest/ref-lime-3.xml - == css-namespaces-3/syntax-015.xml css-namespaces-3/reftest/ref-lime-1.xml - fails-if(!styloVsGecko) == css-values-3/attr-color-invalid-cast.html css-values-3/reference/200-200-green.html -diff --git layout/xul/crashtests/crashtests.list layout/xul/crashtests/crashtests.list -index c1445cb5ec7a..e60af3526383 100644 ---- layout/xul/crashtests/crashtests.list -+++ layout/xul/crashtests/crashtests.list -@@ -1,6 +1,6 @@ - load 131008-1.xul - load 137216-1.xul --load 140218-1.xml -+asserts-if(stylo,3) load 140218-1.xml - load 151826-1.xul - load 168724-1.xul - load 189814-1.xul -diff --git testing/web-platform/meta/css/css-namespaces-3/syntax-013.xml.ini testing/web-platform/meta/css/css-namespaces-3/syntax-013.xml.ini -new file mode 100644 -index 000000000000..b034ccf978f5 ---- /dev/null -+++ testing/web-platform/meta/css/css-namespaces-3/syntax-013.xml.ini -@@ -0,0 +1,4 @@ -+[syntax-013.xml] -+ type: reftest -+ expected: -+ if stylo: FAIL diff --git a/www/waterfox/files/patch-bug1370791 b/www/waterfox/files/patch-bug1370791 deleted file mode 100644 index 038094fd6fb5..000000000000 --- a/www/waterfox/files/patch-bug1370791 +++ /dev/null @@ -1,104 +0,0 @@ -commit 4ab22d92be00 -Author: Gijs Kruitbosch -Date: Wed Oct 4 19:12:40 2017 +0100 - - Bug 1370791 - Use CUI listener and an attribute to toggle hiding/showing the new tab button. r=jaws, a=ritu - - MozReview-Commit-ID: DaKohSCnrJn - - --HG-- - extra : source : 3894d341fe1631dc755e5b16b3a286ec4e741991 - extra : amend_source : 14a18fd29a60434f84664ee21eb245397a87f160 ---- - browser/base/content/browser.css | 4 +-- - browser/base/content/tabbrowser.xml | 49 +++++++++++++++++++++++++++++++++++++ - 2 files changed, 51 insertions(+), 2 deletions(-) - -diff --git browser/base/content/browser.css browser/base/content/browser.css -index 8afcbf4a5f48..4527cd480fb0 100644 ---- browser/base/content/browser.css -+++ browser/base/content/browser.css -@@ -114,9 +114,9 @@ tabbrowser { - } - - #tabbrowser-tabs:not([overflow="true"]) ~ #alltabs-button, --#tabbrowser-tabs:not([overflow="true"]) + #new-tab-button, -+#tabbrowser-tabs[hasadjacentnewtabbutton]:not([overflow="true"]) ~ #new-tab-button, - #tabbrowser-tabs[overflow="true"] > .tabbrowser-arrowscrollbox > .tabs-newtab-button, --#TabsToolbar[currentset]:not([currentset*="tabbrowser-tabs,new-tab-button"]) > #tabbrowser-tabs > .tabbrowser-arrowscrollbox > .tabs-newtab-button, -+#tabbrowser-tabs:not([hasadjacentnewtabbutton]) > .tabbrowser-arrowscrollbox > .tabs-newtab-button, - #TabsToolbar[customizing="true"] > #tabbrowser-tabs > .tabbrowser-arrowscrollbox > .tabs-newtab-button { - visibility: collapse; - } -diff --git browser/base/content/tabbrowser.xml browser/base/content/tabbrowser.xml -index 7575a985eeba..7e6c321e5dee 100644 ---- browser/base/content/tabbrowser.xml -+++ browser/base/content/tabbrowser.xml -@@ -5808,11 +5808,58 @@ - ]]> - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - -Date: Wed Mar 14 13:30:53 2018 -0500 - - Bug 1372107 - Allow browser to be started despite Autoconfig errors. r=florian, a=ritu - - MozReview-Commit-ID: of8cdUMedC - - --HG-- - extra : rebase_source : d58039b1f2e268c7a0af77e9a0680f759f203d99 - extra : source : dad020b0bb45903972c2856cc3a2968f39a27635 ---- - extensions/pref/autoconfig/src/nsReadConfig.cpp | 27 +++++++++++++------------ - 1 file changed, 14 insertions(+), 13 deletions(-) - -diff --git extensions/pref/autoconfig/src/nsReadConfig.cpp extensions/pref/autoconfig/src/nsReadConfig.cpp -index a87b5b2c1bd4..8939fdc268eb 100644 ---- extensions/pref/autoconfig/src/nsReadConfig.cpp -+++ extensions/pref/autoconfig/src/nsReadConfig.cpp -@@ -36,35 +36,35 @@ extern nsresult CentralizedAdminPrefManagerInit(); - extern nsresult CentralizedAdminPrefManagerFinish(); - - --static void DisplayError(void) -+static nsresult DisplayError(void) - { - nsresult rv; - - nsCOMPtr promptService = do_GetService("@mozilla.org/embedcomp/prompt-service;1"); - if (!promptService) -- return; -+ return NS_ERROR_FAILURE; - - nsCOMPtr bundleService = do_GetService(NS_STRINGBUNDLE_CONTRACTID); - if (!bundleService) -- return; -+ return NS_ERROR_FAILURE; - - nsCOMPtr bundle; - bundleService->CreateBundle("chrome://autoconfig/locale/autoconfig.properties", - getter_AddRefs(bundle)); - if (!bundle) -- return; -+ return NS_ERROR_FAILURE; - - nsXPIDLString title; - rv = bundle->GetStringFromName("readConfigTitle", getter_Copies(title)); - if (NS_FAILED(rv)) -- return; -+ return rv; - - nsXPIDLString err; - rv = bundle->GetStringFromName("readConfigMsg", getter_Copies(err)); - if (NS_FAILED(rv)) -- return; -+ return rv; - -- promptService->Alert(nullptr, title.get(), err.get()); -+ return promptService->Alert(nullptr, title.get(), err.get()); - } - - // nsISupports Implementation -@@ -101,12 +101,13 @@ NS_IMETHODIMP nsReadConfig::Observe(nsISupports *aSubj - if (!nsCRT::strcmp(aTopic, NS_PREFSERVICE_READ_TOPIC_ID)) { - rv = readConfigFile(); - if (NS_FAILED(rv)) { -- DisplayError(); -- -- nsCOMPtr appStartup = -- do_GetService(NS_APPSTARTUP_CONTRACTID); -- if (appStartup) -- appStartup->Quit(nsIAppStartup::eAttemptQuit); -+ rv = DisplayError(); -+ if (NS_FAILED(rv)) { -+ nsCOMPtr appStartup = -+ do_GetService(NS_APPSTARTUP_CONTRACTID); -+ if (appStartup) -+ appStartup->Quit(nsIAppStartup::eAttemptQuit); -+ } - } - } - return rv; diff --git a/www/waterfox/files/patch-bug1373371 b/www/waterfox/files/patch-bug1373371 deleted file mode 100644 index 75362fc53d31..000000000000 --- a/www/waterfox/files/patch-bug1373371 +++ /dev/null @@ -1,44 +0,0 @@ -commit 94b1df91cc7f -Author: Eric Rahm -Date: Mon Jun 19 17:09:54 2017 -0700 - - Bug 1373371 - Properly convert index in RemoveElementsAt. r=froydnj, a=ritu - - MozReview-Commit-ID: 2CRrUmOxA9B - - --HG-- - extra : source : 337103b85c025be555c107c7710ebe25d2feb6ed ---- - xpcom/ds/nsTArray.h | 12 +++++++++--- - 1 file changed, 9 insertions(+), 3 deletions(-) - -diff --git xpcom/ds/nsTArray.h xpcom/ds/nsTArray.h -index 4e9b57126bfb..e0244846aca3 100644 ---- xpcom/ds/nsTArray.h -+++ xpcom/ds/nsTArray.h -@@ -13,6 +13,7 @@ - #include "mozilla/Assertions.h" - #include "mozilla/Attributes.h" - #include "mozilla/BinarySearch.h" -+#include "mozilla/CheckedInt.h" - #include "mozilla/fallible.h" - #include "mozilla/MathAlgorithms.h" - #include "mozilla/MemoryReporting.h" -@@ -2053,9 +2054,14 @@ void - nsTArray_Impl::RemoveElementsAt(index_type aStart, size_type aCount) - { - MOZ_ASSERT(aCount == 0 || aStart < Length(), "Invalid aStart index"); -- MOZ_ASSERT(aStart + aCount <= Length(), "Invalid length"); -- // Check that the previous assert didn't overflow -- MOZ_ASSERT(aStart <= aStart + aCount, "Start index plus length overflows"); -+ -+ mozilla::CheckedInt rangeEnd = aStart; -+ rangeEnd += aCount; -+ -+ if (MOZ_UNLIKELY(!rangeEnd.isValid() || rangeEnd.value() > Length())) { -+ InvalidArrayIndex_CRASH(aStart, Length()); -+ } -+ - DestructRange(aStart, aCount); - this->template ShiftData(aStart, aCount, 0, - sizeof(elem_type), diff --git a/www/waterfox/files/patch-bug1377158 b/www/waterfox/files/patch-bug1377158 deleted file mode 100644 index dc4385635715..000000000000 --- a/www/waterfox/files/patch-bug1377158 +++ /dev/null @@ -1,285 +0,0 @@ -commit 9e809e01c262 -Author: Xidorn Quan -Date: Thu Aug 3 11:24:55 2017 +1000 - - Bug 1377158 - (Part 1) Set style backend to stylo when SVG is used as an image. r=heycam - - MozReview-Commit-ID: 9FnA8X84h87 - - --HG-- - extra : rebase_source : 49a6140c4c78c35f755710934c798ce46dafa213 ---- - dom/base/nsDocument.cpp | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git dom/base/nsDocument.cpp dom/base/nsDocument.cpp -index 3585a7e222df..b4773160af92 100644 ---- dom/base/nsDocument.cpp -+++ dom/base/nsDocument.cpp -@@ -13219,7 +13219,10 @@ nsIDocument::UpdateStyleBackendType() - - #ifdef MOZ_STYLO - if (nsLayoutUtils::StyloEnabled()) { -- if (!mDocumentContainer) { -+ if (IsBeingUsedAsImage()) { -+ // Enable stylo for SVG-as-image. -+ mStyleBackendType = StyleBackendType::Servo; -+ } else if (!mDocumentContainer) { - NS_WARNING("stylo: No docshell yet, assuming Gecko style system"); - } else if ((IsHTMLOrXHTML() || IsSVGDocument()) && - IsContentDocument()) { - -commit e418f1ccf520 -Author: KuoE0 -Date: Mon Jul 24 11:51:20 2017 +0800 - - Bug 1377158 - (Part 2) Add the info of StyloEnabled() to hash function to make reftests of styloVsGecko get the correct caches. r=heycam - - MozReview-Commit-ID: 7cyXheHQ7Ot - - --HG-- - extra : rebase_source : 4a92de63228cb2a138d95d8f366b39122dbdc05e ---- - image/ImageCacheKey.cpp | 20 ++++++++++++++++---- - image/ImageCacheKey.h | 7 ++++++- - 2 files changed, 22 insertions(+), 5 deletions(-) - -diff --git image/ImageCacheKey.cpp image/ImageCacheKey.cpp -index c3327155c1cd..2dfdc7c763cc 100644 ---- image/ImageCacheKey.cpp -+++ image/ImageCacheKey.cpp -@@ -8,6 +8,7 @@ - #include "mozilla/Move.h" - #include "ImageURL.h" - #include "nsHostObjectProtocolHandler.h" -+#include "nsLayoutUtils.h" - #include "nsString.h" - #include "mozilla/dom/File.h" - #include "mozilla/dom/workers/ServiceWorkerManager.h" -@@ -53,6 +54,7 @@ ImageCacheKey::ImageCacheKey(nsIURI* aURI, - , mOriginAttributes(aAttrs) - , mControlledDocument(GetControlledDocumentToken(aDocument)) - , mIsChrome(URISchemeIs(mURI, "chrome")) -+ , mIsStyloEnabled(nsLayoutUtils::StyloEnabled()) - { - NS_ENSURE_SUCCESS_VOID(aRv); - -@@ -62,7 +64,8 @@ ImageCacheKey::ImageCacheKey(nsIURI* aURI, - mBlobSerial = BlobSerial(mURI); - } - -- mHash = ComputeHash(mURI, mBlobSerial, mOriginAttributes, mControlledDocument); -+ mHash = ComputeHash(mURI, mBlobSerial, mOriginAttributes, mControlledDocument, -+ mIsStyloEnabled); - } - - ImageCacheKey::ImageCacheKey(ImageURL* aURI, -@@ -72,6 +75,7 @@ ImageCacheKey::ImageCacheKey(ImageURL* aURI, - , mOriginAttributes(aAttrs) - , mControlledDocument(GetControlledDocumentToken(aDocument)) - , mIsChrome(URISchemeIs(mURI, "chrome")) -+ , mIsStyloEnabled(nsLayoutUtils::StyloEnabled()) - { - MOZ_ASSERT(aURI); - -@@ -79,7 +83,8 @@ ImageCacheKey::ImageCacheKey(ImageURL* aURI, - mBlobSerial = BlobSerial(mURI); - } - -- mHash = ComputeHash(mURI, mBlobSerial, mOriginAttributes, mControlledDocument); -+ mHash = ComputeHash(mURI, mBlobSerial, mOriginAttributes, mControlledDocument, -+ mIsStyloEnabled); - } - - ImageCacheKey::ImageCacheKey(const ImageCacheKey& aOther) -@@ -89,6 +94,7 @@ ImageCacheKey::ImageCacheKey(const ImageCacheKey& aOther) - , mControlledDocument(aOther.mControlledDocument) - , mHash(aOther.mHash) - , mIsChrome(aOther.mIsChrome) -+ , mIsStyloEnabled(aOther.mIsStyloEnabled) - { } - - ImageCacheKey::ImageCacheKey(ImageCacheKey&& aOther) -@@ -98,11 +104,15 @@ ImageCacheKey::ImageCacheKey(ImageCacheKey&& aOther) - , mControlledDocument(aOther.mControlledDocument) - , mHash(aOther.mHash) - , mIsChrome(aOther.mIsChrome) -+ , mIsStyloEnabled(aOther.mIsStyloEnabled) - { } - - bool - ImageCacheKey::operator==(const ImageCacheKey& aOther) const - { -+ if (mIsStyloEnabled != aOther.mIsStyloEnabled) { -+ return false; -+ } - // Don't share the image cache between a controlled document and anything else. - if (mControlledDocument != aOther.mControlledDocument) { - return false; -@@ -132,7 +142,8 @@ ImageCacheKey::Spec() const - ImageCacheKey::ComputeHash(ImageURL* aURI, - const Maybe& aBlobSerial, - const OriginAttributes& aAttrs, -- void* aControlledDocument) -+ void* aControlledDocument, -+ bool aIsStyloEnabled) - { - // Since we frequently call Hash() several times in a row on the same - // ImageCacheKey, as an optimization we compute our hash once and store it. -@@ -142,7 +153,8 @@ ImageCacheKey::ComputeHash(ImageURL* aURI, - aAttrs.CreateSuffix(suffix); - - return AddToHash(0, aURI->ComputeHash(aBlobSerial), -- HashString(suffix), HashString(ptr)); -+ HashString(suffix), HashString(ptr), -+ aIsStyloEnabled); - } - - /* static */ void* -diff --git image/ImageCacheKey.h image/ImageCacheKey.h -index c5acd0ea495e..6d676ccb6338 100644 ---- image/ImageCacheKey.h -+++ image/ImageCacheKey.h -@@ -58,7 +58,8 @@ private: - static PLDHashNumber ComputeHash(ImageURL* aURI, - const Maybe& aBlobSerial, - const OriginAttributes& aAttrs, -- void* aControlledDocument); -+ void* aControlledDocument, -+ bool aIsStyloEnabled); - static void* GetControlledDocumentToken(nsIDocument* aDocument); - - RefPtr mURI; -@@ -67,6 +68,10 @@ private: - void* mControlledDocument; - PLDHashNumber mHash; - bool mIsChrome; -+ // To prevent the reftests of styloVsGecko taking the same image cache after -+ // refreshing, we need to store different caches of stylo and gecko. So, we -+ // also consider the info of StyloEnabled() in ImageCacheKey. -+ bool mIsStyloEnabled; - }; - - } // namespace image - -commit c95ed14053c7 -Author: KuoE0 -Date: Thu Jul 27 14:06:54 2017 +0800 - - Bug 1377158 - (Part 3) Update the expectation of test cases. r=bholley,heycam - - MozReview-Commit-ID: K3gmTudkzol - - --HG-- - extra : rebase_source : 32ba6ceb37fa2f29cde8d2534d73108e87dfa406 ---- - layout/reftests/css-break/reftest.list | 2 +- - layout/reftests/svg/as-image/reftest.list | 2 +- - layout/reftests/table-background/reftest.list | 8 ++++---- - 3 files changed, 6 insertions(+), 6 deletions(-) - -diff --git layout/reftests/css-break/reftest.list layout/reftests/css-break/reftest.list -index 4364cf7d93fc..54cfbcbbeefc 100644 ---- layout/reftests/css-break/reftest.list -+++ layout/reftests/css-break/reftest.list -@@ -2,7 +2,7 @@ default-preferences pref(layout.css.box-decoration-break.enabled,true) - - == box-decoration-break-1.html box-decoration-break-1-ref.html - fuzzy(1,20) fuzzy-if(skiaContent,1,700) fuzzy-if(webrender,4-4,3273-3273) == box-decoration-break-with-inset-box-shadow-1.html box-decoration-break-with-inset-box-shadow-1-ref.html --fuzzy(16,460) fuzzy-if(Android,10,3673) fuzzy-if(skiaContent,57,374) == box-decoration-break-with-outset-box-shadow-1.html box-decoration-break-with-outset-box-shadow-1-ref.html -+fuzzy(16,460) fuzzy-if(Android,10,3673) fuzzy-if(skiaContent,57,374) fuzzy-if(styloVsGecko,1,420) == box-decoration-break-with-outset-box-shadow-1.html box-decoration-break-with-outset-box-shadow-1-ref.html # Bug 1386543 - random-if(!gtkWidget) HTTP(..) == box-decoration-break-border-image.html box-decoration-break-border-image-ref.html - == box-decoration-break-block-border-padding.html box-decoration-break-block-border-padding-ref.html - == box-decoration-break-block-margin.html box-decoration-break-block-margin-ref.html -diff --git layout/reftests/svg/as-image/reftest.list layout/reftests/svg/as-image/reftest.list -index d5feb66693ad..acff18d18b50 100644 ---- layout/reftests/svg/as-image/reftest.list -+++ layout/reftests/svg/as-image/reftest.list -@@ -58,7 +58,7 @@ fuzzy(1,2) fuzzy-if(azureSkia,1,40000) == canvas-drawImage-alpha-2.html canvas-d - # context-fill: - == context-fill-01.html blue100x100-ref.html - test-pref(svg.context-properties.content.enabled,true) == context-fill-01.html lime100x100-ref.html --== context-fill-02.html transparent100x100-w-border-ref.html -+fails-if(styloVsGecko||stylo) == context-fill-02.html transparent100x100-w-border-ref.html # Bug 1380590 - test-pref(svg.context-properties.content.enabled,true) == context-fill-02.html lime100x100-w-border-ref.html - test-pref(svg.context-properties.content.enabled,true) == context-fill-03.html lime100x100-50pct-ref.html - # fuzz because on win8 the r & b components are off by one -diff --git layout/reftests/table-background/reftest.list layout/reftests/table-background/reftest.list -index d8a138112527..df2f629d0d7f 100644 ---- layout/reftests/table-background/reftest.list -+++ layout/reftests/table-background/reftest.list -@@ -1,11 +1,11 @@ - # these could be moved to crashtests - != backgr_border-table-cell.html empty.html --!= backgr_border-table-column-group.html empty.html -+fuzzy-if(styloVsGecko,5,330) != backgr_border-table-column-group.html empty.html # Bug 1386543 - # This seems to be caused by bug 527825 --asserts-if(gtkWidget,0-12) != backgr_border-table-column.html empty.html -+fuzzy-if(styloVsGecko,5,561) asserts-if(gtkWidget,0-12) != backgr_border-table-column.html empty.html # Bug 1386543 - asserts-if(gtkWidget,0-6) != backgr_border-table-quirks.html empty.html --!= backgr_border-table-row-group.html empty.html --!= backgr_border-table-row.html empty.html -+fuzzy-if(styloVsGecko,1,168) != backgr_border-table-row-group.html empty.html # Bug 1386543 -+fuzzy-if(styloVsGecko,1,168) != backgr_border-table-row.html empty.html # Bug 1386543 - != backgr_border-table.html empty.html - != backgr_fixed-bg.html empty.html - != backgr_index.html empty.html - -commit dd7cb82fb7b5 -Author: KuoE0 -Date: Fri Jul 28 00:23:05 2017 +0800 - - Bug 1377158 - (Part 4) Reduce the assertion cost to check reconstruction frame hint. r=bholley,heycam - - The original assertion took too long time to check nsStyleChangeList. It - caused the test case with many elements timed-out and failed. - - MozReview-Commit-ID: FpNZvdQFTtR - - --HG-- - extra : rebase_source : c68072448061c4dcc8399131924cf718a5e53700 ---- - layout/base/nsStyleChangeList.cpp | 30 +++++++++++++++++++----------- - 1 file changed, 19 insertions(+), 11 deletions(-) - -diff --git layout/base/nsStyleChangeList.cpp layout/base/nsStyleChangeList.cpp -index 6f68cded3814..af6256f46c22 100644 ---- layout/base/nsStyleChangeList.cpp -+++ layout/base/nsStyleChangeList.cpp -@@ -41,17 +41,25 @@ nsStyleChangeList::AppendChange(nsIFrame* aFrame, nsIContent* aContent, nsChange - (aHint & nsChangeHint_NeedReflow), - "Reflow hint bits set without actually asking for a reflow"); - -- // If Servo fires reconstruct at a node, it is the only change hint fired at -- // that node. -- if (IsServo()) { -- for (size_t i = 0; i < Length(); ++i) { -- MOZ_ASSERT(!aContent || !((aHint | (*this)[i].mHint) & nsChangeHint_ReconstructFrame) || -- (*this)[i].mContent != aContent); -- } -- } else { -- // Filter out all other changes for same content for Gecko (Servo asserts against this -- // case above). -- if (aContent && (aHint & nsChangeHint_ReconstructFrame)) { -+ if (aContent && (aHint & nsChangeHint_ReconstructFrame)) { -+ // If Servo fires reconstruct at a node, it is the only change hint fired at -+ // that node. -+ if (IsServo()) { -+ // Note: Because we check whether |aHint| is a reconstruct above (which is -+ // necessary to avoid debug test timeouts on certain crashtests), this check -+ // will not find bugs where we add a non-reconstruct hint for an element after -+ // adding a reconstruct. This is ok though, since ProcessRestyledFrames will -+ // handle that case via mDestroyedFrames. -+ for (size_t i = 0; i < Length(); ++i) { -+ MOZ_ASSERT(aContent != (*this)[i].mContent || -+ !((*this)[i].mHint & nsChangeHint_ReconstructFrame), -+ "Should not append a non-ReconstructFrame hint after \ -+ appending a ReconstructFrame hint for the same \ -+ content."); -+ } -+ } else { -+ // Filter out all other changes for same content for Gecko (Servo asserts against this -+ // case above). - // NOTE: This is captured by reference to please static analysis. - // Capturing it by value as a pointer should be fine in this case. - RemoveElementsBy([&](const nsStyleChangeData& aData) { diff --git a/www/waterfox/files/patch-bug1377587 b/www/waterfox/files/patch-bug1377587 deleted file mode 100644 index 5e58f504cffd..000000000000 --- a/www/waterfox/files/patch-bug1377587 +++ /dev/null @@ -1,929 +0,0 @@ -commit 2b68b38709b1 -Author: Andrew McCreight -Date: Tue Aug 22 14:24:11 2017 -0700 - - Bug 1377587, part 1 - Always act like __exposedProps__ is missing. r=krizsa - - This patch gently removes support for __exposedProps__ by changing - ExposedPropertiesOnly::check() to always return false, while still - failing silently in deny for some kinds of access. - - The tests that I changed all involve testing the behavior with - __exposedProps__. I adjusted them to expect it to fail, or to adjust - the error message they get when they fail. That seemed better than - deleting them entirely. - - Note that test_bug1065185.html had a bug, so that it never executed - the first case. I fixed that, and then fixed up the test to work when - __exposedProps__ is not supported. - - This also removes various bits of the test framework that use - __exposedProps__, but don't actually need to. - - MozReview-Commit-ID: 8fvkAmITmXY - - --HG-- - extra : rebase_source : ef7e2c55adc12511f17f3865ebb46c343875f0b3 ---- - addon-sdk/source/lib/sdk/console/plain-text.js | 10 -- - addon-sdk/source/lib/sdk/test/loader.js | 5 - - .../addons/e10s-content/lib/test-content-script.js | 6 +- - addon-sdk/source/test/test-content-script.js | 6 +- - devtools/server/tests/unit/test_objectgrips-17.js | 4 - - dom/base/nsDeprecatedOperationList.h | 1 - - dom/base/test/chrome/cpows_child.js | 12 +- - dom/locales/en-US/chrome/dom/dom.properties | 2 - - js/xpconnect/src/XPCJSRuntime.cpp | 1 - - js/xpconnect/src/xpcprivate.h | 1 - - js/xpconnect/tests/chrome/test_bug1065185.html | 6 +- - js/xpconnect/tests/chrome/test_cows.xul | 80 +++------ - js/xpconnect/tests/chrome/test_exposeInDerived.xul | 13 +- - js/xpconnect/tests/unit/test_bug1082450.js | 20 +-- - js/xpconnect/tests/unit/test_bug780370.js | 7 +- - js/xpconnect/tests/unit/test_bug813901.js | 2 +- - js/xpconnect/tests/unit/test_bug853709.js | 4 +- - js/xpconnect/tests/unit/test_bug854558.js | 2 +- - js/xpconnect/tests/unit/test_bug930091.js | 2 +- - js/xpconnect/wrappers/AccessCheck.cpp | 179 --------------------- - js/xpconnect/wrappers/AccessCheck.h | 11 +- - js/xpconnect/wrappers/ChromeObjectWrapper.h | 6 +- - js/xpconnect/wrappers/WrapperFactory.cpp | 4 +- - js/xpconnect/wrappers/XrayWrapper.cpp | 2 +- - testing/mochitest/tests/SimpleTest/ChromePowers.js | 9 -- - .../specialpowers/content/MockPermissionPrompt.jsm | 12 -- - .../components/addoncompat/RemoteAddonsParent.jsm | 2 +- - 27 files changed, 74 insertions(+), 335 deletions(-) - -diff --git addon-sdk/source/lib/sdk/console/plain-text.js addon-sdk/source/lib/sdk/console/plain-text.js -index 0e44cf106d52..07b8eb629e12 100644 ---- addon-sdk/source/lib/sdk/console/plain-text.js -+++ addon-sdk/source/lib/sdk/console/plain-text.js -@@ -62,16 +62,6 @@ function PlainTextConsole(print, innerID) { - } - }); - -- // We defined the `__exposedProps__` in our console chrome object. -- // -- // Meanwhile we're investigating with the platform team if `__exposedProps__` -- // are needed, or are just a left-over. -- -- console.__exposedProps__ = Object.keys(ConsoleAPI.prototype).reduce(function(exposed, prop) { -- exposed[prop] = "r"; -- return exposed; -- }, {}); -- - Object.freeze(console); - return console; - }; -diff --git addon-sdk/source/lib/sdk/test/loader.js addon-sdk/source/lib/sdk/test/loader.js -index 33ba2ca5a029..b555de63f02a 100644 ---- addon-sdk/source/lib/sdk/test/loader.js -+++ addon-sdk/source/lib/sdk/test/loader.js -@@ -53,11 +53,6 @@ function HookedPlainTextConsole(hook, print, innerID) { - this.exception = hook.bind(null, "exception", innerID); - this.time = hook.bind(null, "time", innerID); - this.timeEnd = hook.bind(null, "timeEnd", innerID); -- -- this.__exposedProps__ = { -- log: "rw", info: "rw", warn: "rw", error: "rw", debug: "rw", -- exception: "rw", time: "rw", timeEnd: "rw" -- }; - } - - // Creates a custom loader instance whose console module is hooked in order -diff --git addon-sdk/source/test/addons/e10s-content/lib/test-content-script.js addon-sdk/source/test/addons/e10s-content/lib/test-content-script.js -index 477895e40481..3dccfec618d3 100644 ---- addon-sdk/source/test/addons/e10s-content/lib/test-content-script.js -+++ addon-sdk/source/test/addons/e10s-content/lib/test-content-script.js -@@ -444,7 +444,7 @@ exports["test Highlight toString Behavior"] = createProxyTest("", function (help - let strToString = helper.rawWindow.Object.prototype.toString.call(""); - assert.ok(/\[object String.*\]/.test(strToString), "strings are strings"); - -- let o = {__exposedProps__:{}}; -+ let o = {}; - let objToString = helper.rawWindow.Object.prototype.toString.call(o); - assert.ok(/\[object Object.*\]/.test(objToString), "objects are objects"); - -@@ -622,10 +622,6 @@ exports["test Functions"] = createProxyTest("", function (helper) { - helper.rawWindow.isEqual = function isEqual(a, b) { - return a == b; - }; -- // bug 784116: workaround in order to allow proxy code to cache proxies on -- // these functions: -- helper.rawWindow.callFunction.__exposedProps__ = {__proxy: 'rw'}; -- helper.rawWindow.isEqual.__exposedProps__ = {__proxy: 'rw'}; - - helper.createWorker( - 'new ' + function ContentScriptScope() { -diff --git addon-sdk/source/test/test-content-script.js addon-sdk/source/test/test-content-script.js -index 709fb5a3aa91..a02e66f65eea 100644 ---- addon-sdk/source/test/test-content-script.js -+++ addon-sdk/source/test/test-content-script.js -@@ -444,7 +444,7 @@ exports["test Highlight toString Behavior"] = createProxyTest("", function (help - let strToString = helper.rawWindow.Object.prototype.toString.call(""); - assert.ok(/\[object String.*\]/.test(strToString), "strings are strings"); - -- let o = {__exposedProps__:{}}; -+ let o = {}; - let objToString = helper.rawWindow.Object.prototype.toString.call(o); - assert.ok(/\[object Object.*\]/.test(objToString), "objects are objects"); - -@@ -622,10 +622,6 @@ exports["test Functions"] = createProxyTest("", function (helper) { - helper.rawWindow.isEqual = function isEqual(a, b) { - return a == b; - }; -- // bug 784116: workaround in order to allow proxy code to cache proxies on -- // these functions: -- helper.rawWindow.callFunction.__exposedProps__ = {__proxy: 'rw'}; -- helper.rawWindow.isEqual.__exposedProps__ = {__proxy: 'rw'}; - - helper.createWorker( - 'new ' + function ContentScriptScope() { -diff --git dom/base/nsDeprecatedOperationList.h dom/base/nsDeprecatedOperationList.h -index 2523187c63a7..adcf4d9d8202 100644 ---- dom/base/nsDeprecatedOperationList.h -+++ dom/base/nsDeprecatedOperationList.h -@@ -21,7 +21,6 @@ DEPRECATED_OPERATION(NodeValue) - DEPRECATED_OPERATION(TextContent) - DEPRECATED_OPERATION(EnablePrivilege) - DEPRECATED_OPERATION(DOMExceptionCode) --DEPRECATED_OPERATION(NoExposedProps) - DEPRECATED_OPERATION(MutationEvent) - DEPRECATED_OPERATION(Components) - DEPRECATED_OPERATION(PrefixedVisibilityAPI) -diff --git dom/base/test/chrome/cpows_child.js dom/base/test/chrome/cpows_child.js -index 6d240a7eaa51..fc7e3f2c9d0f 100644 ---- dom/base/test/chrome/cpows_child.js -+++ dom/base/test/chrome/cpows_child.js -@@ -105,7 +105,13 @@ function parent_test(finish) - - addMessageListener("cpows:from_parent", (msg) => { - let obj = msg.objects.obj; -- ok(obj.a == 1, "correct value from parent"); -+ if (is_remote) { -+ ok(obj.a == undefined, "__exposedProps__ should not work"); -+ } else { -+ // The same process test is not run as content, so the field can -+ // be accessed even though __exposedProps__ has been removed. -+ ok(obj.a == 1, "correct value from parent"); -+ } - - // Test that a CPOW reference to a function in the chrome process - // is callable from unprivileged content. Greasemonkey uses this -@@ -260,11 +266,11 @@ function lifetime_test(finish) - var obj = {"will_die": {"f": 1}}; - let [result] = sendRpcMessage("cpows:lifetime_test_1", {}, {obj: obj}); - ok(result == 10, "got sync result"); -- ok(obj.wont_die.f == 2, "got reverse CPOW"); -+ ok(obj.wont_die.f == undefined, "got reverse CPOW"); - obj.will_die = null; - Components.utils.schedulePreciseGC(function() { - addMessageListener("cpows:lifetime_test_3", (msg) => { -- ok(obj.wont_die.f == 2, "reverse CPOW still works"); -+ ok(obj.wont_die.f == undefined, "reverse CPOW still works"); - finish(); - }); - sendRpcMessage("cpows:lifetime_test_2"); -diff --git dom/locales/en-US/chrome/dom/dom.properties dom/locales/en-US/chrome/dom/dom.properties -index 5c94a580287a..ac9dbed58e08 100644 ---- dom/locales/en-US/chrome/dom/dom.properties -+++ dom/locales/en-US/chrome/dom/dom.properties -@@ -154,8 +154,6 @@ MediaEMENoCapabilitiesDeprecatedWarning=Calling navigator.requestMediaKeySystemA - MediaEMENoCodecsDeprecatedWarning=Calling navigator.requestMediaKeySystemAccess() (at %S) passing a candidate MediaKeySystemConfiguration containing audioCapabilities or videoCapabilities without a contentType with a “codecs” string is deprecated and will soon become unsupported. - # LOCALIZATION NOTE: Do not translate "DOMException", "code" and "name" - DOMExceptionCodeWarning=Use of DOMException’s code attribute is deprecated. Use name instead. --# LOCALIZATION NOTE: Do not translate "__exposedProps__" --NoExposedPropsWarning=Exposing chrome JS objects to content without __exposedProps__ is insecure and deprecated. See https://developer.mozilla.org/en/XPConnect_wrappers for more information. - # LOCALIZATION NOTE: Do not translate "Mutation Event" and "MutationObserver" - MutationEventWarning=Use of Mutation Events is deprecated. Use MutationObserver instead. - # LOCALIZATION NOTE: Do not translate "Components" -diff --git js/xpconnect/src/XPCJSRuntime.cpp js/xpconnect/src/XPCJSRuntime.cpp -index 455b9f8e963f..ff9aea0a41eb 100644 ---- js/xpconnect/src/XPCJSRuntime.cpp -+++ js/xpconnect/src/XPCJSRuntime.cpp -@@ -93,7 +93,6 @@ const char* const XPCJSRuntime::mStrings[] = { - "item", // IDX_ITEM - "__proto__", // IDX_PROTO - "__iterator__", // IDX_ITERATOR -- "__exposedProps__", // IDX_EXPOSEDPROPS - "eval", // IDX_EVAL - "controllers", // IDX_CONTROLLERS - "Controllers", // IDX_CONTROLLERS_CLASS -diff --git js/xpconnect/src/xpcprivate.h js/xpconnect/src/xpcprivate.h -index fb7e43c22cd0..5d877f09d301 100644 ---- js/xpconnect/src/xpcprivate.h -+++ js/xpconnect/src/xpcprivate.h -@@ -460,7 +460,6 @@ public: - IDX_ITEM , - IDX_PROTO , - IDX_ITERATOR , -- IDX_EXPOSEDPROPS , - IDX_EVAL , - IDX_CONTROLLERS , - IDX_CONTROLLERS_CLASS , -diff --git js/xpconnect/tests/chrome/test_bug1065185.html js/xpconnect/tests/chrome/test_bug1065185.html -index cdd65326f9c8..7ea81fc8aa6f 100644 ---- js/xpconnect/tests/chrome/test_bug1065185.html -+++ js/xpconnect/tests/chrome/test_bug1065185.html -@@ -25,11 +25,11 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1065185 - - var gLoadCount = 0; - function loaded() { -- switch(++gLoadCount) { -+ switch(gLoadCount++) { - case 0: -- doMonitor([]); -+ doMonitor([/access to property "a"/i]); - window[0].wrappedJSObject.probe = { a: 2, __exposedProps__: { 'a': 'r' } }; -- is(window[0].eval('probe.a'), 2, "Accessed exposed prop"); -+ is(window[0].eval('probe.a'), undefined, "Accessed exposed prop"); - endMonitor(); - break; - case 1: -diff --git js/xpconnect/tests/chrome/test_cows.xul js/xpconnect/tests/chrome/test_cows.xul -index 75c5250dd150..adfdd686540b 100644 ---- js/xpconnect/tests/chrome/test_cows.xul -+++ js/xpconnect/tests/chrome/test_cows.xul -@@ -49,13 +49,6 @@ sandbox.getCOW = getCOW; - const TEST_API = ['is', 'isnot', 'ok', 'todo_is', 'todo_isnot', 'todo']; - TEST_API.forEach(function(name) { sandbox[name] = window[name]; }); - --sandbox.alienObject = { -- __exposedProps__: {funProp: 'r'}, -- funProp: function foo(x) { -- return x + 1; -- } --}; -- - sandbox.chromeGet = function (obj, prop) { return obj[prop]; }; - - function COWTests() { -@@ -74,17 +67,6 @@ function COWTests() { - // functions like assertIsWritable(myObj, 'someproperty') might - // be useful. - -- function isProp(obj, propName, value, desc) { -- try { -- is(obj[propName], value, "getting " + propName + " on " + desc); -- ok(propName in obj, -- propName + " on " + desc + " should exist"); -- ok(Object.hasOwnProperty.call(obj, propName), -- propName + " on " + desc + " should exist"); -- } catch (e) { -- ok(false, "getting " + propName + " on " + desc + " threw " + e); -- } -- } - function isPropHidden(obj, propName, desc) { - try { - is(obj[propName], undefined, -@@ -103,7 +85,7 @@ function COWTests() { - var empty = {}; - var nonempty = {foo: 42, bar: 33}; - is(getCOW(empty).foo, undefined, -- "shouldn't throw when accessing exposed properties that doesn't exist"); -+ "shouldn't throw when accessing exposed properties that don't exist"); - - PROPS_TO_TEST.forEach(function(name) { - isPropHidden(getCOW(nonempty), name, "object without exposedProps"); -@@ -135,18 +117,12 @@ function COWTests() { - var strict = { __exposedProps__: { foo: "r" }, foo: "foo property" }; - var strictCOWr = getCOW(strict); - PROPS_TO_TEST.forEach(function(name) { -- if (name == "foo") { -- isProp(strictCOWr, name, "foo property", -- "object with exposed 'foo'"); -- } -- else { -- isPropHidden(strictCOW, name, "object with exposed 'foo'"); -- } -+ isPropHidden(strictCOW, name, "object with exposed 'foo'"); - }); -- is(getNames(strictCOWr).length, 1, -- "object with exposedProps only enumerate exposed props"); -- is(getNames(strictCOWr)[0], "foo", -- "object with exposedProps only enumerate exposed props"); -+ is(getNames(strictCOWr).length, 0, -+ "exposed props does not enumerate anything"); -+ is(getNames(strictCOWr)[0], undefined, -+ "exposed props does not enumerate anything"); - - // Test writable property - var writable = getCOW({ __exposedProps__: {foo: 'w'}}); -@@ -154,25 +130,18 @@ function COWTests() { - ok(!("foo" in writable), - "non-existing write-only property shouldn't exist"); - writable.foo = 5; -- is(chromeGet(writable, "foo"), 5, "writing to a write-only exposed prop works"); -- todo("foo" in writable, -- "existing write-only property should exist"); -- } catch (e) { -- ok(false, "writing to a write-only exposed prop shouldn't throw " + e); -- } -- try { -- writable.foo; -- todo(false, "reading from a write-only exposed prop should throw"); -+ ok(false, "writing to a write-only exposed prop should throw"); - } catch (e) { -- todo(/Permission denied/.test(e), -- "reading from a write-only exposed prop should throw"); -+ ok(/Permission denied/.test(e), -+ "writing to a write-only exposed prop should throw the right error"); - } -+ is(writable.foo, undefined, -+ "reading from a write-only exposed prop should return undefined"); - try { - delete writable.foo; -- is(chromeGet(writable, "foo"), undefined, -- "deleting a write-only exposed prop works"); -+ ok(false, "deleting a write-only exposed prop should throw"); - } catch (e) { -- ok(false, "deleting a write-only exposed prop shouldn't throw " + e); -+ ok(true, "deleting a write-only exposed prop should throw " + e); - } - - // Test readable property -@@ -180,8 +149,8 @@ function COWTests() { - foo: 5, - bar: 6 }; - try { -- isProp(getCOW(readable), "foo", 5, -- "reading from a readable exposed prop works"); -+ isPropHidden(getCOW(readable), "foo", undefined, -+ "reading from a readable exposed prop shouldn't work"); - } catch (e) { - ok(false, "reading from a readable exposed prop shouldn't throw " + e); - } -@@ -202,8 +171,7 @@ function COWTests() { - - try { - var props = getNames(getCOW(readable)); -- is(props.length, 1, "COW w/ one exposed prop should enumerate once"); -- is(props[0], 'foo', "COW w/ one exposed prop should enumerate it"); -+ is(props.length, 0, "COW w/ one exposed prop should not enumerate"); - } catch (e) { - ok(false, "COW w/ a readable prop should not raise exc " + - "on enumeration: " + e); -@@ -215,21 +183,17 @@ function COWTests() { - ok(!("foo" in readwrite), - "non-existing readwrite property shouldn't exist"); - readwrite.foo = 5; -- is(readwrite.foo, 5, "writing to a readwrite exposed prop looks like it worked"); -- is(chromeGet(readwrite, "foo"), 5, "writing to a readwrite exposed prop works"); -- ok("foo" in readwrite, -- "existing readwrite property should exist"); -+ ok(false, "writing to a readwrite exposed prop should throw"); - } catch (e) { -- ok(false, "writing to a readwrite exposed prop shouldn't throw " + e); -+ ok(/Permission denied/.test(e), -+ "writing to a readwrite exposed prop should throw the right error"); - } - try { - delete readwrite.foo; -- is(readwrite.foo, undefined, "deleting readwrite prop looks like it worked"); -- ok(!("foo" in readwrite), "deleting readwrite prop looks like it really worked"); -- is(chromeGet(readwrite, "foo"), undefined, -- "deleting a readwrite exposed prop works"); -+ ok(false, "deleting a readwrite prop should throw"); - } catch (e) { -- ok(false, "deleting a readwrite exposed prop shouldn't throw " + e); -+ ok(/Permission denied/.test(e), -+ "deleting a readwrite exposed prop should throw the right error"); - } - - // Readables and functions -diff --git js/xpconnect/tests/chrome/test_exposeInDerived.xul js/xpconnect/tests/chrome/test_exposeInDerived.xul -index 2ed3bb91e7fd..7e6c24e56db1 100644 ---- js/xpconnect/tests/chrome/test_exposeInDerived.xul -+++ js/xpconnect/tests/chrome/test_exposeInDerived.xul -@@ -17,7 +17,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=804630 - - -diff --git js/xpconnect/tests/unit/test_bug1082450.js js/xpconnect/tests/unit/test_bug1082450.js -index 07f45f06beef..5880fcbcd4e6 100644 ---- js/xpconnect/tests/unit/test_bug1082450.js -+++ js/xpconnect/tests/unit/test_bug1082450.js -@@ -5,9 +5,9 @@ function run_test() { - function checkThrows(str, rgxp) { - try { - sb.eval(str); -- do_check_true(false); -+ do_check_true(false, "eval should have thrown"); - } catch (e) { -- do_check_true(rgxp.test(e)); -+ do_check_true(rgxp.test(e), "error message should match"); - } - } - -@@ -29,12 +29,12 @@ function run_test() { - chromeCallableValueProp: 'r' } - }; - -- do_check_eq(sb.eval('exposed.simpleValueProp'), 42); -- do_check_eq(sb.eval('exposed.objectValueProp.val'), 42); -- checkThrows('exposed.getterProp;', /privileged accessor/i); -- checkThrows('exposed.setterProp = 42;', /privileged accessor/i); -- checkThrows('exposed.getterSetterProp;', /privileged accessor/i); -- checkThrows('exposed.getterSetterProp = 42;', /privileged accessor/i); -- do_check_eq(sb.eval('exposed.contentCallableValueProp()'), 42); -- checkThrows('exposed.chromeCallableValueProp();', /privileged or cross-origin callable/i); -+ do_check_eq(sb.eval('exposed.simpleValueProp'), undefined); -+ do_check_eq(sb.eval('exposed.objectValueProp'), undefined); -+ do_check_eq(sb.eval('exposed.getterProp;'), undefined); -+ do_check_eq(sb.eval('exposed.getterSetterProp;'), undefined); -+ checkThrows('exposed.setterProp = 42;', /Permission denied/i); -+ checkThrows('exposed.getterSetterProp = 42;', /Permission denied/i); -+ do_check_eq(sb.eval('exposed.contentCallableValueProp'), undefined); -+ checkThrows('exposed.chromeCallableValueProp();', /is not a function/i); - } -diff --git js/xpconnect/tests/unit/test_bug780370.js js/xpconnect/tests/unit/test_bug780370.js -index 40d6f9748015..7ae757f0cd01 100644 ---- js/xpconnect/tests/unit/test_bug780370.js -+++ js/xpconnect/tests/unit/test_bug780370.js -@@ -14,10 +14,5 @@ function run_test() - var sb = Cu.Sandbox("http://www.example.com"); - sb.obj = { foo: 42, __exposedProps__: { hasOwnProperty: 'r' } }; - do_check_eq(Cu.evalInSandbox('typeof obj.foo', sb), 'undefined', "COW works as expected"); -- try { -- Cu.evalInSandbox('obj.hasOwnProperty', sb); -- do_check_true(false); -- } catch (e) { -- do_check_true(/privileged or cross-origin callable/i.test(e)); -- } -+ do_check_eq(Cu.evalInSandbox('obj.hasOwnProperty', sb), undefined); - } -diff --git js/xpconnect/tests/unit/test_bug813901.js js/xpconnect/tests/unit/test_bug813901.js -index 42f981581b51..2efc6539e879 100644 ---- js/xpconnect/tests/unit/test_bug813901.js -+++ js/xpconnect/tests/unit/test_bug813901.js -@@ -21,5 +21,5 @@ function run_test() { - checkThrows('obj.foo = 3;', sb, /denied/); - Cu.evalInSandbox("var p = {__exposedProps__: {foo: 'rw'}};", sb); - sb.obj.__proto__ = sb.p; -- checkThrows('obj.foo = 4;', sb, /__exposedProps__/); -+ checkThrows('obj.foo = 4;', sb, /denied/); - } -diff --git js/xpconnect/tests/unit/test_bug853709.js js/xpconnect/tests/unit/test_bug853709.js -index c7e51757dc63..1667d2241f93 100644 ---- js/xpconnect/tests/unit/test_bug853709.js -+++ js/xpconnect/tests/unit/test_bug853709.js -@@ -8,7 +8,7 @@ function setupChromeSandbox() { - function checkDefineThrows(sb, obj, prop, desc) { - var result = Cu.evalInSandbox('(function() { try { Object.defineProperty(' + obj + ', "' + prop + '", ' + desc.toSource() + '); return "nothrow"; } catch (e) { return e.toString(); }})();', sb); - do_check_neq(result, 'nothrow'); -- do_check_true(!!/denied/.exec(result)); -+ do_check_true(!!/denied|prohibited/.exec(result)); - do_check_true(result.indexOf(prop) != -1); // Make sure the prop name is in the error message. - } - -@@ -19,7 +19,7 @@ function run_test() { - contentSB.chromeObj = chromeSB.chromeObj; - contentSB.chromeArr = chromeSB.chromeArr; - -- do_check_eq(Cu.evalInSandbox('chromeObj.a', contentSB), 2); -+ do_check_eq(Cu.evalInSandbox('chromeObj.a', contentSB), undefined); - try { - Cu.evalInSandbox('chromeArr[1]', contentSB); - do_check_true(false); -diff --git js/xpconnect/tests/unit/test_bug854558.js js/xpconnect/tests/unit/test_bug854558.js -index d60d23a5baf8..574194dc3f52 100644 ---- js/xpconnect/tests/unit/test_bug854558.js -+++ js/xpconnect/tests/unit/test_bug854558.js -@@ -7,5 +7,5 @@ function run_test() { - contentSB.foo = chromeSB.foo; - do_check_eq(Cu.evalInSandbox('foo.a', contentSB), undefined, "Default deny with no __exposedProps__"); - Cu.evalInSandbox('this.foo.__exposedProps__ = {a: "r"}', chromeSB); -- do_check_eq(Cu.evalInSandbox('foo.a', contentSB), 2, "works with __exposedProps__"); -+ do_check_eq(Cu.evalInSandbox('foo.a', contentSB), undefined, "Still not allowed with __exposedProps__"); - } -diff --git js/xpconnect/tests/unit/test_bug930091.js js/xpconnect/tests/unit/test_bug930091.js -index aa11d5db2640..ecb2a60aed11 100644 ---- js/xpconnect/tests/unit/test_bug930091.js -+++ js/xpconnect/tests/unit/test_bug930091.js -@@ -5,7 +5,7 @@ function checkThrows(fn) { - fn(); - ok(false, "Should have thrown"); - } catch (e) { -- do_check_true(/denied|insecure/.test(e)); -+ do_check_true(/denied|insecure|prohibited/.test(e)); - } - } - -diff --git js/xpconnect/wrappers/AccessCheck.cpp js/xpconnect/wrappers/AccessCheck.cpp -index 07599ce7906a..b730310731e2 100644 ---- js/xpconnect/wrappers/AccessCheck.cpp -+++ js/xpconnect/wrappers/AccessCheck.cpp -@@ -252,20 +252,6 @@ AccessCheck::checkPassToPrivilegedCode(JSContext* cx, HandleObject wrapper, Hand - return true; - } - -- // COWs are fine to pass to chrome if and only if they have __exposedProps__, -- // since presumably content should never have a reason to pass an opaque -- // object back to chrome. -- if (AccessCheck::isChrome(js::UncheckedUnwrap(wrapper)) && WrapperFactory::IsCOW(obj)) { -- RootedObject target(cx, js::UncheckedUnwrap(obj)); -- JSAutoCompartment ac(cx, target); -- RootedId id(cx, GetJSIDByIndex(cx, XPCJSContext::IDX_EXPOSEDPROPS)); -- bool found = false; -- if (!JS_HasPropertyById(cx, target, id, &found)) -- return false; -- if (found) -- return true; -- } -- - // Same-origin wrappers are fine. - if (AccessCheck::wrapperSubsumes(obj)) - return true; -@@ -323,171 +309,6 @@ AccessCheck::reportCrossOriginDenial(JSContext* cx, JS::HandleId id, - MOZ_ALWAYS_TRUE(rv.MaybeSetPendingException(cx)); - } - --enum Access { READ = (1<<0), WRITE = (1<<1), NO_ACCESS = 0 }; -- --static void --EnterAndThrowASCII(JSContext* cx, JSObject* wrapper, const char* msg) --{ -- JSAutoCompartment ac(cx, wrapper); -- JS_ReportErrorASCII(cx, "%s", msg); --} -- --bool --ExposedPropertiesOnly::check(JSContext* cx, HandleObject wrapper, HandleId id, Wrapper::Action act) --{ -- RootedObject wrappedObject(cx, Wrapper::wrappedObject(wrapper)); -- -- if (act == Wrapper::CALL) -- return false; -- -- // For the case of getting a property descriptor, we allow if either GET or SET -- // is allowed, and rely on FilteringWrapper to filter out any disallowed accessors. -- if (act == Wrapper::GET_PROPERTY_DESCRIPTOR) { -- return check(cx, wrapper, id, Wrapper::GET) || -- check(cx, wrapper, id, Wrapper::SET); -- } -- -- RootedId exposedPropsId(cx, GetJSIDByIndex(cx, XPCJSContext::IDX_EXPOSEDPROPS)); -- -- // We need to enter the wrappee's compartment to look at __exposedProps__, -- // but we want to be in the wrapper's compartment if we call Deny(). -- // -- // Unfortunately, |cx| can be in either compartment when we call ::check. :-( -- JSAutoCompartment ac(cx, wrappedObject); -- -- bool found = false; -- if (!JS_HasPropertyById(cx, wrappedObject, exposedPropsId, &found)) -- return false; -- -- // If no __exposedProps__ existed, deny access. -- if (!found) { -- // Previously we automatically granted access to indexed properties and -- // .length for Array COWs. We're not doing that anymore, so make sure to -- // let people know what's going on. -- bool isArray; -- if (!JS_IsArrayObject(cx, wrappedObject, &isArray)) -- return false; -- if (!isArray) -- isArray = JS_IsTypedArrayObject(wrappedObject); -- bool isIndexedAccessOnArray = isArray && JSID_IS_INT(id) && JSID_TO_INT(id) >= 0; -- bool isLengthAccessOnArray = isArray && JSID_IS_STRING(id) && -- JS_FlatStringEqualsAscii(JSID_TO_FLAT_STRING(id), "length"); -- if (isIndexedAccessOnArray || isLengthAccessOnArray) { -- JSAutoCompartment ac2(cx, wrapper); -- ReportWrapperDenial(cx, id, WrapperDenialForCOW, -- "Access to elements and length of privileged Array not permitted"); -- } -- -- return false; -- } -- -- if (id == JSID_VOID) -- return true; -- -- Rooted desc(cx); -- if (!JS_GetPropertyDescriptorById(cx, wrappedObject, exposedPropsId, &desc)) -- return false; -- -- if (!desc.object()) -- return false; -- -- if (desc.hasGetterOrSetter()) { -- EnterAndThrowASCII(cx, wrapper, "__exposedProps__ must be a value property"); -- return false; -- } -- -- RootedValue exposedProps(cx, desc.value()); -- if (exposedProps.isNullOrUndefined()) -- return false; -- -- if (!exposedProps.isObject()) { -- EnterAndThrowASCII(cx, wrapper, "__exposedProps__ must be undefined, null, or an Object"); -- return false; -- } -- -- RootedObject hallpass(cx, &exposedProps.toObject()); -- -- if (!AccessCheck::subsumes(js::UncheckedUnwrap(hallpass), wrappedObject)) { -- EnterAndThrowASCII(cx, wrapper, "Invalid __exposedProps__"); -- return false; -- } -- -- Access access = NO_ACCESS; -- -- if (!JS_GetPropertyDescriptorById(cx, hallpass, id, &desc)) { -- return false; // Error -- } -- if (!desc.object() || !desc.enumerable()) -- return false; -- -- if (!desc.value().isString()) { -- EnterAndThrowASCII(cx, wrapper, "property must be a string"); -- return false; -- } -- -- JSFlatString* flat = JS_FlattenString(cx, desc.value().toString()); -- if (!flat) -- return false; -- -- size_t length = JS_GetStringLength(JS_FORGET_STRING_FLATNESS(flat)); -- -- for (size_t i = 0; i < length; ++i) { -- char16_t ch = JS_GetFlatStringCharAt(flat, i); -- switch (ch) { -- case 'r': -- if (access & READ) { -- EnterAndThrowASCII(cx, wrapper, "duplicate 'readable' property flag"); -- return false; -- } -- access = Access(access | READ); -- break; -- -- case 'w': -- if (access & WRITE) { -- EnterAndThrowASCII(cx, wrapper, "duplicate 'writable' property flag"); -- return false; -- } -- access = Access(access | WRITE); -- break; -- -- default: -- EnterAndThrowASCII(cx, wrapper, "properties can only be readable or read and writable"); -- return false; -- } -- } -- -- if (access == NO_ACCESS) { -- EnterAndThrowASCII(cx, wrapper, "specified properties must have a permission bit set"); -- return false; -- } -- -- if ((act == Wrapper::SET && !(access & WRITE)) || -- (act != Wrapper::SET && !(access & READ))) { -- return false; -- } -- -- // Inspect the property on the underlying object to check for red flags. -- if (!JS_GetPropertyDescriptorById(cx, wrappedObject, id, &desc)) -- return false; -- -- // Reject accessor properties. -- if (desc.hasGetterOrSetter()) { -- EnterAndThrowASCII(cx, wrapper, "Exposing privileged accessor properties is prohibited"); -- return false; -- } -- -- // Reject privileged or cross-origin callables. -- if (desc.value().isObject()) { -- RootedObject maybeCallable(cx, js::UncheckedUnwrap(&desc.value().toObject())); -- if (JS::IsCallable(maybeCallable) && !AccessCheck::subsumes(wrapper, maybeCallable)) { -- EnterAndThrowASCII(cx, wrapper, "Exposing privileged or cross-origin callable is prohibited"); -- return false; -- } -- } -- -- return true; --} -- - bool - ExposedPropertiesOnly::deny(JSContext* cx, js::Wrapper::Action act, HandleId id, - bool mayThrow) -diff --git js/xpconnect/wrappers/AccessCheck.h js/xpconnect/wrappers/AccessCheck.h -index 678dce3e0b81..c4873760ab7a 100644 ---- js/xpconnect/wrappers/AccessCheck.h -+++ js/xpconnect/wrappers/AccessCheck.h -@@ -104,10 +104,15 @@ struct CrossOriginAccessiblePropertiesOnly : public Policy { - } - }; - --// This policy only permits access to properties if they appear in the --// objects exposed properties list. -+// This class used to support permitting access to properties if they -+// appeared in an access list on the object, but now it acts like an -+// Opaque wrapper, with the exception that it fails silently for GET, -+// ENUMERATE, and GET_PROPERTY_DESCRIPTOR. This is done for backwards -+// compatibility. See bug 1397513. - struct ExposedPropertiesOnly : public Policy { -- static bool check(JSContext* cx, JS::HandleObject wrapper, JS::HandleId id, js::Wrapper::Action act); -+ static bool check(JSContext* cx, JS::HandleObject wrapper, JS::HandleId id, js::Wrapper::Action act) { -+ return false; -+ } - - static bool deny(JSContext* cx, js::Wrapper::Action act, JS::HandleId id, - bool mayThrow); -diff --git js/xpconnect/wrappers/ChromeObjectWrapper.h js/xpconnect/wrappers/ChromeObjectWrapper.h -index 8b273e470814..c17feed10b9a 100644 ---- js/xpconnect/wrappers/ChromeObjectWrapper.h -+++ js/xpconnect/wrappers/ChromeObjectWrapper.h -@@ -16,9 +16,9 @@ namespace xpc { - struct ExposedPropertiesOnly; - - // When a vanilla chrome JS object is exposed to content, we use a wrapper that --// supports __exposedProps__ for legacy reasons. For extra security, we override --// the traps that allow content to pass an object to chrome, and perform extra --// security checks on them. -+// fails silently on GET, ENUMERATE, and GET_PROPERTY_DESCRIPTOR for legacy -+// reasons. For extra security, we override the traps that allow content to pass -+// an object to chrome, and perform extra security checks on them. - #define ChromeObjectWrapperBase \ - FilteringWrapper - -diff --git js/xpconnect/wrappers/WrapperFactory.cpp js/xpconnect/wrappers/WrapperFactory.cpp -index 6296f69fbea4..760d2c9afda8 100644 ---- js/xpconnect/wrappers/WrapperFactory.cpp -+++ js/xpconnect/wrappers/WrapperFactory.cpp -@@ -514,8 +514,8 @@ WrapperFactory::Rewrap(JSContext* cx, HandleObject existing, HandleObject obj) - wrapper = &FilteringWrapper::singleton; - } - -- // For Vanilla JSObjects exposed from chrome to content, we use a wrapper -- // that supports __exposedProps__. We'd like to get rid of these eventually, -+ // For vanilla JSObjects exposed from chrome to content, we use a wrapper -+ // that fails silently in a few cases. We'd like to get rid of this eventually, - // but in their current form they don't cause much trouble. - else if (IdentifyStandardInstance(obj) == JSProto_Object) { - wrapper = &ChromeObjectWrapper::singleton; -diff --git js/xpconnect/wrappers/XrayWrapper.cpp js/xpconnect/wrappers/XrayWrapper.cpp -index 44dd7cb47146..28e29ea13d93 100644 ---- js/xpconnect/wrappers/XrayWrapper.cpp -+++ js/xpconnect/wrappers/XrayWrapper.cpp -@@ -291,7 +291,7 @@ ReportWrapperDenial(JSContext* cx, HandleId id, WrapperDenialType type, const ch - MOZ_ASSERT(type == WrapperDenialForCOW); - errorMessage.emplace("Security wrapper denied access to property %s on privileged " - "Javascript object. Support for exposing privileged objects " -- "to untrusted content via __exposedProps__ is being gradually " -+ "to untrusted content via __exposedProps__ has been " - "removed - use WebIDL bindings or Components.utils.cloneInto " - "instead. Note that only the first denied property access from a " - "given global object will be reported.", -diff --git testing/mochitest/tests/SimpleTest/ChromePowers.js testing/mochitest/tests/SimpleTest/ChromePowers.js -index 97de578157c0..7fbf66e2fd00 100644 ---- testing/mochitest/tests/SimpleTest/ChromePowers.js -+++ testing/mochitest/tests/SimpleTest/ChromePowers.js -@@ -104,15 +104,6 @@ ChromePowers.prototype.executeAfterFlushingMessageQueue = function(aCallback) { - aCallback(); - }; - --// Expose everything but internal APIs (starting with underscores) to --// web content. We cannot use Object.keys to view SpecialPowers.prototype since --// we are using the functions from SpecialPowersAPI.prototype --ChromePowers.prototype.__exposedProps__ = {}; --for (var i in ChromePowers.prototype) { -- if (i.charAt(0) != "_") -- ChromePowers.prototype.__exposedProps__[i] = "r"; --} -- - if ((window.parent !== null) && - (window.parent !== undefined) && - (window.parent.wrappedJSObject.SpecialPowers) && -diff --git testing/specialpowers/content/MockPermissionPrompt.jsm testing/specialpowers/content/MockPermissionPrompt.jsm -index 71d0f5d2768a..1d86cc00e360 100644 ---- testing/specialpowers/content/MockPermissionPrompt.jsm -+++ testing/specialpowers/content/MockPermissionPrompt.jsm -@@ -83,15 +83,3 @@ MockPermissionPromptInstance.prototype = { - request.allow(); - } - }; -- --// Expose everything to content. We call reset() here so that all of the relevant --// lazy expandos get added. --MockPermissionPrompt.reset(); --function exposeAll(obj) { -- var props = {}; -- for (var prop in obj) -- props[prop] = "rw"; -- obj.__exposedProps__ = props; --} --exposeAll(MockPermissionPrompt); --exposeAll(MockPermissionPromptInstance.prototype); -diff --git toolkit/components/addoncompat/RemoteAddonsParent.jsm toolkit/components/addoncompat/RemoteAddonsParent.jsm -index 1adbc0397729..d640c47d31f8 100644 ---- toolkit/components/addoncompat/RemoteAddonsParent.jsm -+++ toolkit/components/addoncompat/RemoteAddonsParent.jsm -@@ -735,7 +735,7 @@ var SandboxParent = { - if (rest.length) { - // Do a shallow copy of the options object into the child - // process. This way we don't have to access it through a Chrome -- // object wrapper, which would require __exposedProps__. -+ // object wrapper, which would not let us access any properties. - // - // The only object property here is sandboxPrototype. We assume - // it's a child process object (since that's what Greasemonkey -commit f89c72edb79e -Author: Andrew McCreight -Date: Thu Sep 7 11:17:16 2017 -0700 - - Bug 1377587, part 2 - Rename ExposedPropertiesOnly to OpaqueWithSilentFailing. r=krizsa - - This class doesn't have anything to do with __exposedProps__ any more, - so give it a more descriptive name. We'd still like to remove it - entirely eventually. - - MozReview-Commit-ID: 87KCpG6f8rI - - --HG-- - extra : rebase_source : 98a51a6af0fc8446dbcd8efa083d6c79286279d3 ---- - js/xpconnect/wrappers/AccessCheck.cpp | 4 ++-- - js/xpconnect/wrappers/AccessCheck.h | 2 +- - js/xpconnect/wrappers/ChromeObjectWrapper.h | 4 ++-- - 3 files changed, 5 insertions(+), 5 deletions(-) - -diff --git js/xpconnect/wrappers/AccessCheck.cpp js/xpconnect/wrappers/AccessCheck.cpp -index b730310731e2..620f1f678f51 100644 ---- js/xpconnect/wrappers/AccessCheck.cpp -+++ js/xpconnect/wrappers/AccessCheck.cpp -@@ -310,8 +310,8 @@ AccessCheck::reportCrossOriginDenial(JSContext* cx, JS::HandleId id, - } - - bool --ExposedPropertiesOnly::deny(JSContext* cx, js::Wrapper::Action act, HandleId id, -- bool mayThrow) -+OpaqueWithSilentFailing::deny(JSContext* cx, js::Wrapper::Action act, HandleId id, -+ bool mayThrow) - { - // Fail silently for GET, ENUMERATE, and GET_PROPERTY_DESCRIPTOR. - if (act == js::Wrapper::GET || act == js::Wrapper::ENUMERATE || -diff --git js/xpconnect/wrappers/AccessCheck.h js/xpconnect/wrappers/AccessCheck.h -index c4873760ab7a..6783258f8d94 100644 ---- js/xpconnect/wrappers/AccessCheck.h -+++ js/xpconnect/wrappers/AccessCheck.h -@@ -109,7 +109,7 @@ struct CrossOriginAccessiblePropertiesOnly : public Policy { - // Opaque wrapper, with the exception that it fails silently for GET, - // ENUMERATE, and GET_PROPERTY_DESCRIPTOR. This is done for backwards - // compatibility. See bug 1397513. --struct ExposedPropertiesOnly : public Policy { -+struct OpaqueWithSilentFailing : public Policy { - static bool check(JSContext* cx, JS::HandleObject wrapper, JS::HandleId id, js::Wrapper::Action act) { - return false; - } -diff --git js/xpconnect/wrappers/ChromeObjectWrapper.h js/xpconnect/wrappers/ChromeObjectWrapper.h -index c17feed10b9a..da4870237501 100644 ---- js/xpconnect/wrappers/ChromeObjectWrapper.h -+++ js/xpconnect/wrappers/ChromeObjectWrapper.h -@@ -13,14 +13,14 @@ - - namespace xpc { - --struct ExposedPropertiesOnly; -+struct OpaqueWithSilentFailing; - - // When a vanilla chrome JS object is exposed to content, we use a wrapper that - // fails silently on GET, ENUMERATE, and GET_PROPERTY_DESCRIPTOR for legacy - // reasons. For extra security, we override the traps that allow content to pass - // an object to chrome, and perform extra security checks on them. - #define ChromeObjectWrapperBase \ -- FilteringWrapper -+ FilteringWrapper - - class ChromeObjectWrapper : public ChromeObjectWrapperBase - { - diff --git a/www/waterfox/files/patch-bug1379148 b/www/waterfox/files/patch-bug1379148 deleted file mode 100644 index e7b01c6eee83..000000000000 --- a/www/waterfox/files/patch-bug1379148 +++ /dev/null @@ -1,366 +0,0 @@ -commit 708a5eba5908 -Author: Kris Maglione -Date: Wed Sep 20 16:12:27 2017 -0700 - - Bug 1379148 - Part 1: Allow blocking only non-script-created parsers. r=hsivonen, a=sledru - - MozReview-Commit-ID: 8cGxywiUzWj - - --HG-- - extra : source : bee57767629862c4b4bfa6258918551ed7d82998 ---- - dom/base/nsDocument.cpp | 10 ++++++---- - dom/base/nsIDocument.h | 1 + - dom/webidl/Document.webidl | 11 ++++++++++- - 3 files changed, 17 insertions(+), 5 deletions(-) - -diff --git dom/base/nsDocument.cpp dom/base/nsDocument.cpp -index 086b386d35f0..d7d1428966f1 100644 ---- dom/base/nsDocument.cpp -+++ dom/base/nsDocument.cpp -@@ -10919,11 +10919,12 @@ public: - NS_DECL_CYCLE_COLLECTING_ISUPPORTS - NS_DECL_CYCLE_COLLECTION_CLASS(UnblockParsingPromiseHandler) - -- explicit UnblockParsingPromiseHandler(nsIDocument* aDocument, Promise* aPromise) -+ explicit UnblockParsingPromiseHandler(nsIDocument* aDocument, Promise* aPromise, -+ const BlockParsingOptions& aOptions) - : mPromise(aPromise) - { - nsCOMPtr parser = aDocument->CreatorParserOrNull(); -- if (parser) { -+ if (parser && (aOptions.mBlockScriptCreated || !parser->IsScriptCreated())) { - parser->BlockParser(); - mParser = do_GetWeakReference(parser); - mDocument = aDocument; -@@ -10986,14 +10987,15 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF(UnblockParsingPromiseHandler) - NS_IMPL_CYCLE_COLLECTING_RELEASE(UnblockParsingPromiseHandler) - - already_AddRefed --nsIDocument::BlockParsing(Promise& aPromise, ErrorResult& aRv) -+nsIDocument::BlockParsing(Promise& aPromise, const BlockParsingOptions& aOptions, ErrorResult& aRv) - { - RefPtr resultPromise = Promise::Create(aPromise.GetParentObject(), aRv); - if (aRv.Failed()) { - return nullptr; - } - -- RefPtr promiseHandler = new UnblockParsingPromiseHandler(this, resultPromise); -+ RefPtr promiseHandler = new UnblockParsingPromiseHandler(this, resultPromise, -+ aOptions); - aPromise.AppendNativeHandler(promiseHandler); - - return resultPromise.forget(); -diff --git dom/base/nsIDocument.h dom/base/nsIDocument.h -index 2f287ae2ccb7..512de896fddf 100644 ---- dom/base/nsIDocument.h -+++ dom/base/nsIDocument.h -@@ -2952,6 +2952,7 @@ public: - void ObsoleteSheet(const nsAString& aSheetURI, mozilla::ErrorResult& rv); - - already_AddRefed BlockParsing(mozilla::dom::Promise& aPromise, -+ const mozilla::dom::BlockParsingOptions& aOptions, - mozilla::ErrorResult& aRv); - - already_AddRefed GetMozDocumentURIIfNotForErrorPages(); -diff --git dom/webidl/Document.webidl dom/webidl/Document.webidl -index 8a629502a6ce..f83874fa7315 100644 ---- dom/webidl/Document.webidl -+++ dom/webidl/Document.webidl -@@ -385,13 +385,22 @@ partial interface Document { - - // Blocks the initial document parser until the given promise is settled. - [ChromeOnly, Throws] -- Promise blockParsing(Promise promise); -+ Promise blockParsing(Promise promise, -+ optional BlockParsingOptions options); - - // like documentURI, except that for error pages, it returns the URI we were - // trying to load when we hit an error, rather than the error page's own URI. - [ChromeOnly] readonly attribute URI? mozDocumentURIIfNotForErrorPages; - }; - -+dictionary BlockParsingOptions { -+ /** -+ * If true, blocks script-created parsers (created via document.open()) in -+ * addition to network-created parsers. -+ */ -+ boolean blockScriptCreated = true; -+}; -+ - // Extension to give chrome JS the ability to determine when a document was - // created to satisfy an iframe with srcdoc attribute. - partial interface Document { - -commit 0947c7c07361 -Author: Kris Maglione -Date: Wed Sep 20 16:13:03 2017 -0700 - - Bug 1379148 - Part 2: Don't block script-created parsers when executing content scripts. r=mixedpuppy, a=sledru - - MozReview-Commit-ID: GsqsaOVob4B - - --HG-- - extra : source : ba22a83959a06a457c8a22d0cd9521eaed220bac ---- - toolkit/components/extensions/ExtensionContent.jsm | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git toolkit/components/extensions/ExtensionContent.jsm toolkit/components/extensions/ExtensionContent.jsm -index 3429ae14daff..c05a00e95398 100644 ---- toolkit/components/extensions/ExtensionContent.jsm -+++ toolkit/components/extensions/ExtensionContent.jsm -@@ -324,7 +324,7 @@ class Script { - // until the scripts have been loaded. - let {document} = context.contentWindow; - if (this.runAt === "document_start" && document.readyState !== "complete") { -- document.blockParsing(scriptsPromise); -+ document.blockParsing(scriptsPromise, {blockScriptCreated: false}); - } - - let scripts = await scriptsPromise; - -commit 5f856a2ba599 -Author: Kris Maglione -Date: Wed Sep 20 17:00:44 2017 -0700 - - Bug 1379148 - Part 3: Inject scripts synchronously if they're already available. r=mixedpuppy, a=sledru - - MozReview-Commit-ID: J6vheuxsqJR - - --HG-- - extra : source : 14ab0648ea9194b7ad84ecf7a330c9bbdadfb303 ---- - toolkit/components/extensions/ExtensionContent.jsm | 36 ++++++++++++++++------ - toolkit/components/extensions/ExtensionUtils.jsm | 12 +++++--- - 2 files changed, 34 insertions(+), 14 deletions(-) - -diff --git toolkit/components/extensions/ExtensionContent.jsm toolkit/components/extensions/ExtensionContent.jsm -index c05a00e95398..9af6870a829b 100644 ---- toolkit/components/extensions/ExtensionContent.jsm -+++ toolkit/components/extensions/ExtensionContent.jsm -@@ -137,8 +137,16 @@ class CacheMap extends DefaultMap { - - class ScriptCache extends CacheMap { - constructor(options) { -- super(SCRIPT_EXPIRY_TIMEOUT_MS, -- url => ChromeUtils.compileScript(url, options)); -+ super(SCRIPT_EXPIRY_TIMEOUT_MS); -+ this.options = options; -+ } -+ -+ defaultConstructor(url) { -+ let promise = ChromeUtils.compileScript(url, this.options); -+ promise.then(script => { -+ promise.script = script; -+ }); -+ return promise; - } - } - -@@ -317,17 +325,25 @@ class Script { - } - } - -- let scriptsPromise = Promise.all(this.compileScripts()); -+ let scriptPromises = this.compileScripts(); -+ -+ let scripts = scriptPromises.map(promise => promise.script); -+ // If not all scripts are already available in the cache, block -+ // parsing and wait all promises to resolve. -+ if (!scripts.every(script => script)) { -+ let promise = Promise.all(scriptPromises); -+ -+ // If we're supposed to inject at the start of the document load, -+ // and we haven't already missed that point, block further parsing -+ // until the scripts have been loaded. -+ let {document} = context.contentWindow; -+ if (this.runAt === "document_start" && document.readyState !== "complete") { -+ document.blockParsing(promise, {blockScriptCreated: false}); -+ } - -- // If we're supposed to inject at the start of the document load, -- // and we haven't already missed that point, block further parsing -- // until the scripts have been loaded. -- let {document} = context.contentWindow; -- if (this.runAt === "document_start" && document.readyState !== "complete") { -- document.blockParsing(scriptsPromise, {blockScriptCreated: false}); -+ scripts = await promise; - } - -- let scripts = await scriptsPromise; - let result; - - // The evaluations below may throw, in which case the promise will be -diff --git toolkit/components/extensions/ExtensionUtils.jsm toolkit/components/extensions/ExtensionUtils.jsm -index a3ed895de6df..4a5fcb19c58d 100644 ---- toolkit/components/extensions/ExtensionUtils.jsm -+++ toolkit/components/extensions/ExtensionUtils.jsm -@@ -67,9 +67,11 @@ function instanceOf(value, type) { - * constructor if one is not present. - */ - class DefaultWeakMap extends WeakMap { -- constructor(defaultConstructor, init) { -+ constructor(defaultConstructor = undefined, init = undefined) { - super(init); -- this.defaultConstructor = defaultConstructor; -+ if (defaultConstructor) { -+ this.defaultConstructor = defaultConstructor; -+ } - } - - get(key) { -@@ -83,9 +85,11 @@ class DefaultWeakMap extends WeakMap { - } - - class DefaultMap extends Map { -- constructor(defaultConstructor, init) { -+ constructor(defaultConstructor = undefined, init = undefined) { - super(init); -- this.defaultConstructor = defaultConstructor; -+ if (defaultConstructor) { -+ this.defaultConstructor = defaultConstructor; -+ } - } - - get(key) { - -commit 3ab96ab42d99 -Author: Kris Maglione -Date: Wed Sep 20 17:01:33 2017 -0700 - - Bug 1379148 - Part 4: Add tests for document.write() with document_start content script present. r=mixedpuppy, a=sledru - - MozReview-Commit-ID: 5yxgpur1tvf - - --HG-- - extra : source : 14298b92236cfcfdd0b9dc43d8077e576f775b4d ---- - .../extensions/ExtensionXPCShellUtils.jsm | 5 +++ - .../test/xpcshell/data/file_document_write.html | 35 ++++++++++++++++ - .../test_ext_contentscript_scriptCreated.js | 49 ++++++++++++++++++++++ - .../extensions/test/xpcshell/xpcshell-content.ini | 1 + - 4 files changed, 90 insertions(+) - -diff --git toolkit/components/extensions/ExtensionXPCShellUtils.jsm toolkit/components/extensions/ExtensionXPCShellUtils.jsm -index d16003d79944..3420ce175d8a 100644 ---- toolkit/components/extensions/ExtensionXPCShellUtils.jsm -+++ toolkit/components/extensions/ExtensionXPCShellUtils.jsm -@@ -59,6 +59,11 @@ function frameScript() { - Components.utils.import("resource://gre/modules/Services.jsm"); - - Services.obs.notifyObservers(this, "tab-content-frameloader-created"); -+ -+ // eslint-disable-next-line mozilla/balanced-listeners -+ addEventListener("MozHeapMinimize", () => { -+ Services.obs.notifyObservers(null, "memory-pressure", "heap-minimize"); -+ }, true, true); - } - - const FRAME_SCRIPT = `data:text/javascript,(${encodeURI(frameScript)}).call(this)`; -diff --git toolkit/components/extensions/test/xpcshell/data/file_document_write.html toolkit/components/extensions/test/xpcshell/data/file_document_write.html -new file mode 100644 -index 000000000000..fbae3d6d763a ---- /dev/null -+++ toolkit/components/extensions/test/xpcshell/data/file_document_write.html -@@ -0,0 +1,35 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git toolkit/components/extensions/test/xpcshell/test_ext_contentscript_scriptCreated.js toolkit/components/extensions/test/xpcshell/test_ext_contentscript_scriptCreated.js -new file mode 100644 -index 000000000000..00407b914015 ---- /dev/null -+++ toolkit/components/extensions/test/xpcshell/test_ext_contentscript_scriptCreated.js -@@ -0,0 +1,49 @@ -+"use strict"; -+ -+const server = createHttpServer(); -+server.registerDirectory("/data/", do_get_file("data")); -+ -+const BASE_URL = `http://localhost:${server.identity.primaryPort}/data`; -+ -+// ExtensionContent.jsm needs to know when it's running from xpcshell, -+// to use the right timeout for content scripts executed at document_idle. -+ExtensionTestUtils.mockAppInfo(); -+ -+// Test that document_start content scripts don't block script-created -+// parsers. -+add_task(async function test_contentscript_scriptCreated() { -+ let extensionData = { -+ manifest: { -+ content_scripts: [{ -+ "matches": ["http://*/*/file_document_write.html"], -+ "js": ["content_script.js"], -+ "run_at": "document_start", -+ "match_about_blank": true, -+ "all_frames": true, -+ }], -+ }, -+ -+ files: { -+ "content_script.js": function() { -+ if (window === top) { -+ addEventListener("message", msg => { -+ browser.test.assertEq("ok", msg.data, "document.write() succeeded"); -+ browser.test.sendMessage("content-script-done"); -+ }, {once: true}); -+ } -+ }, -+ }, -+ }; -+ -+ let extension = ExtensionTestUtils.loadExtension(extensionData); -+ -+ await extension.startup(); -+ -+ let contentPage = await ExtensionTestUtils.loadContentPage(`${BASE_URL}/file_document_write.html`); -+ -+ await extension.awaitMessage("content-script-done"); -+ -+ await contentPage.close(); -+ -+ await extension.unload(); -+}); -diff --git toolkit/components/extensions/test/xpcshell/xpcshell-content.ini toolkit/components/extensions/test/xpcshell/xpcshell-content.ini -index e34ec0717691..65814ff5da97 100644 ---- toolkit/components/extensions/test/xpcshell/xpcshell-content.ini -+++ toolkit/components/extensions/test/xpcshell/xpcshell-content.ini -@@ -2,4 +2,5 @@ - skip-if = os == "android" || (os == "win" && debug) - [test_ext_i18n_css.js] - [test_ext_contentscript.js] -+[test_ext_contentscript_scriptCreated.js] - [test_ext_contentscript_xrays.js] diff --git a/www/waterfox/files/patch-bug1381761 b/www/waterfox/files/patch-bug1381761 deleted file mode 100644 index 416bd4ac8c26..000000000000 --- a/www/waterfox/files/patch-bug1381761 +++ /dev/null @@ -1,362 +0,0 @@ -commit 256e249566d8 -Author: Christoph Kerschbaumer -Date: Fri Aug 4 14:11:17 2017 +0200 - - Bug 1381761 - Treating 'data:' documents as unique, opaque origins should still inherit the CSP. r=smaug,dveditz ---- - caps/moz.build | 1 + - caps/nsScriptSecurityManager.cpp | 96 +++++++++++++++++++++++++--------------- - 2 files changed, 62 insertions(+), 35 deletions(-) - -diff --git caps/moz.build caps/moz.build -index 46331e93f097..af369e3268e0 100644 ---- caps/moz.build -+++ caps/moz.build -@@ -56,6 +56,7 @@ LOCAL_INCLUDES += [ - '/docshell/base', - '/dom/base', - '/js/xpconnect/src', -+ '/netwerk/base', - ] - - if CONFIG['ENABLE_TESTS']: -diff --git caps/nsScriptSecurityManager.cpp caps/nsScriptSecurityManager.cpp -index a930b324a6a2..90695ebd126f 100644 ---- caps/nsScriptSecurityManager.cpp -+++ caps/nsScriptSecurityManager.cpp -@@ -45,6 +45,7 @@ - #include "nsIWindowWatcher.h" - #include "nsIConsoleService.h" - #include "nsIObserverService.h" -+#include "nsIOService.h" - #include "nsIContent.h" - #include "nsDOMJSUtils.h" - #include "nsAboutProtocolUtils.h" -@@ -265,6 +266,61 @@ nsScriptSecurityManager::GetChannelResultPrincipalIfNotSandboxed(nsIChannel* aCh - /*aIgnoreSandboxing*/ true); - } - -+static void -+InheritAndSetCSPOnPrincipalIfNeeded(nsIChannel* aChannel, nsIPrincipal* aPrincipal) -+{ -+ // loading a data: URI into an iframe, or loading frame[srcdoc] need -+ // to inherit the CSP (see Bug 1073952, 1381761). -+ MOZ_ASSERT(aChannel && aPrincipal, "need a valid channel and principal"); -+ if (!aChannel) { -+ return; -+ } -+ -+ nsCOMPtr loadInfo = aChannel->GetLoadInfo(); -+ if (!loadInfo || -+ loadInfo->GetExternalContentPolicyType() != nsIContentPolicy::TYPE_SUBDOCUMENT) { -+ return; -+ } -+ -+ nsCOMPtr uri; -+ nsresult rv = aChannel->GetURI(getter_AddRefs(uri)); -+ NS_ENSURE_SUCCESS_VOID(rv); -+ nsAutoCString URISpec; -+ rv = uri->GetSpec(URISpec); -+ NS_ENSURE_SUCCESS_VOID(rv); -+ -+ bool isSrcDoc = URISpec.EqualsLiteral("about:srcdoc"); -+ bool isData = (NS_SUCCEEDED(uri->SchemeIs("data", &isData)) && isData); -+ -+ if (!isSrcDoc && !isData) { -+ return; -+ } -+ -+ nsCOMPtr principalToInherit = loadInfo->PrincipalToInherit(); -+ if (!principalToInherit) { -+ principalToInherit = loadInfo->TriggeringPrincipal(); -+ } -+ nsCOMPtr originalCSP; -+ principalToInherit->GetCsp(getter_AddRefs(originalCSP)); -+ if (!originalCSP) { -+ return; -+ } -+ -+ // if the principalToInherit had a CSP, add it to the before -+ // created NullPrincipal (unless it already has one) -+ MOZ_ASSERT(aPrincipal->GetIsNullPrincipal(), -+ "inheriting the CSP only valid for NullPrincipal"); -+ nsCOMPtr nullPrincipalCSP; -+ aPrincipal->GetCsp(getter_AddRefs(nullPrincipalCSP)); -+ if (nullPrincipalCSP) { -+ MOZ_ASSERT(nullPrincipalCSP == originalCSP, -+ "There should be no other CSP here."); -+ // CSPs are equal, no need to set it again. -+ return; -+ } -+ aPrincipal->SetCsp(originalCSP); -+} -+ - nsresult - nsScriptSecurityManager::GetChannelResultPrincipal(nsIChannel* aChannel, - nsIPrincipal** aPrincipal, -@@ -295,40 +351,7 @@ nsScriptSecurityManager::GetChannelResultPrincipal(nsIChannel* aChannel, - if (!aIgnoreSandboxing && loadInfo->GetLoadingSandboxed()) { - MOZ_ALWAYS_TRUE(NS_SUCCEEDED(loadInfo->GetSandboxedLoadingPrincipal(aPrincipal))); - MOZ_ASSERT(*aPrincipal); -- // if the new NullPrincipal (above) loads an iframe[srcdoc], we -- // need to inherit an existing CSP to avoid bypasses (bug 1073952). -- // We continue inheriting for nested frames with e.g., data: URLs. -- if (loadInfo->GetExternalContentPolicyType() == nsIContentPolicy::TYPE_SUBDOCUMENT) { -- nsCOMPtr uri; -- aChannel->GetURI(getter_AddRefs(uri)); -- nsAutoCString URISpec; -- uri->GetSpec(URISpec); -- bool isData = (NS_SUCCEEDED(uri->SchemeIs("data", &isData)) && isData); -- if (URISpec.EqualsLiteral("about:srcdoc") || isData) { -- nsCOMPtr principalToInherit = loadInfo->PrincipalToInherit(); -- if (!principalToInherit) { -- principalToInherit = loadInfo->TriggeringPrincipal(); -- } -- nsCOMPtr originalCSP; -- principalToInherit->GetCsp(getter_AddRefs(originalCSP)); -- if (originalCSP) { -- // if the principalToInherit had a CSP, -- // add it to the newly created NullPrincipal -- // (unless it already has one) -- nsCOMPtr nullPrincipalCSP; -- (*aPrincipal)->GetCsp(getter_AddRefs(nullPrincipalCSP)); -- if (nullPrincipalCSP) { -- MOZ_ASSERT(nullPrincipalCSP == originalCSP, -- "There should be no other CSP here."); -- // CSPs are equal, no need to set it again. -- return NS_OK; -- } else { -- nsresult rv = (*aPrincipal)->SetCsp(originalCSP); -- NS_ENSURE_SUCCESS(rv, rv); -- } -- } -- } -- } -+ InheritAndSetCSPOnPrincipalIfNeeded(aChannel, *aPrincipal); - return NS_OK; - } - -@@ -376,7 +399,10 @@ nsScriptSecurityManager::GetChannelResultPrincipal(nsIChannel* aChannel, - } - } - } -- return GetChannelURIPrincipal(aChannel, aPrincipal); -+ nsresult rv = GetChannelURIPrincipal(aChannel, aPrincipal); -+ NS_ENSURE_SUCCESS(rv, rv); -+ InheritAndSetCSPOnPrincipalIfNeeded(aChannel, *aPrincipal); -+ return NS_OK; - } - - /* The principal of the URI that this channel is loading. This is never - -commit 9427f1bbd826 -Author: Christoph Kerschbaumer -Date: Fri Aug 4 14:10:21 2017 +0200 - - Bug 1381761 - Convert test browser_911547.js to comply with new data: URI inheritance model. r=dveditz ---- - .../components/sessionstore/test/browser_911547.js | 47 ++++++++++++++++------ - .../sessionstore/test/browser_911547_sample.html | 6 +-- - 2 files changed, 37 insertions(+), 16 deletions(-) - -diff --git browser/components/sessionstore/test/browser_911547.js browser/components/sessionstore/test/browser_911547.js -index f0da70ed8f8c..cb95ddad7f2a 100644 ---- browser/components/sessionstore/test/browser_911547.js -+++ browser/components/sessionstore/test/browser_911547.js -@@ -1,11 +1,17 @@ - /* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - --// This tests that session restore component does restore the right content --// security policy with the document. --// The policy being tested disallows inline scripts -+// This test is two fold: -+// a) if security.data_uri.unique_opaque_origin == false, then -+// this tests that session restore component does restore the right -+// content security policy with the document. (The policy being -+// tested disallows inline scripts). -+// b) if security.data_uri.unique_opaque_origin == true, then -+// this tests that data: URIs do not inherit the CSP from -+// it's enclosing context. - - add_task(async function test() { -+ let dataURIPref = Services.prefs.getBoolPref("security.data_uri.unique_opaque_origin"); - // create a tab that has a CSP - let testURL = "http://mochi.test:8888/browser/browser/components/sessionstore/test/browser_911547_sample.html"; - let tab = gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser, testURL); -@@ -16,23 +22,33 @@ add_task(async function test() { - - // this is a baseline to ensure CSP is active - // attempt to inject and run a script via inline (pre-restore, allowed) -- await injectInlineScript(browser, `document.getElementById("test_id").value = "fail";`); -+ await injectInlineScript(browser, `document.getElementById("test_id1").value = "id1_modified";`); - - let loadedPromise = promiseBrowserLoaded(browser); - await ContentTask.spawn(browser, null, function() { -- is(content.document.getElementById("test_id").value, "ok", -+ is(content.document.getElementById("test_id1").value, "id1_initial", - "CSP should block the inline script that modifies test_id"); - -- // attempt to click a link to a data: URI (will inherit the CSP of the -- // origin document) and navigate to the data URI in the link. -+ -+ // (a) if security.data_uri.unique_opaque_origin == false: -+ // attempt to click a link to a data: URI (will inherit the CSP of -+ // the origin document) and navigate to the data URI in the link. -+ // (b) if security.data_uri.unique_opaque_origin == true: -+ // attempt to click a link to a data: URI (will *not* inherit the CSP of -+ // the origin document) and navigate to the data URI in the link. - content.document.getElementById("test_data_link").click(); - }); - - await loadedPromise; - -- await ContentTask.spawn(browser, null, function() { -- is(content.document.getElementById("test_id2").value, "ok", -- "CSP should block the script loaded by the clicked data URI"); -+ await ContentTask.spawn(browser, {dataURIPref}, function( {dataURIPref}) { // eslint-disable-line -+ if (dataURIPref) { -+ is(content.document.getElementById("test_id2").value, "id2_modified", -+ "data: URI should *not* inherit the CSP of the enclosing context"); -+ } else { -+ is(content.document.getElementById("test_id2").value, "id2_initial", -+ "CSP should block the script loaded by the clicked data URI"); -+ } - }); - - // close the tab -@@ -43,9 +59,14 @@ add_task(async function test() { - await promiseTabRestored(tab); - browser = tab.linkedBrowser; - -- await ContentTask.spawn(browser, null, function() { -- is(content.document.getElementById("test_id2").value, "ok", -- "CSP should block the script loaded by the clicked data URI after restore"); -+ await ContentTask.spawn(browser, {dataURIPref}, function({dataURIPref}) { // eslint-disable-line -+ if (dataURIPref) { -+ is(content.document.getElementById("test_id2").value, "id2_modified", -+ "data: URI should *not* inherit the CSP of the enclosing context"); -+ } else { -+ is(content.document.getElementById("test_id2").value, "id2_initial", -+ "CSP should block the script loaded by the clicked data URI after restore"); -+ } - }); - - // clean up -diff --git browser/components/sessionstore/test/browser_911547_sample.html browser/components/sessionstore/test/browser_911547_sample.html -index ccc2011593d4..73cb99ee41f1 100644 ---- browser/components/sessionstore/test/browser_911547_sample.html -+++ browser/components/sessionstore/test/browser_911547_sample.html -@@ -8,12 +8,12 @@ - - -- -+ - -- Test Link -+ Test Link - - - - -commit 8b999864f0bb -Author: Christoph Kerschbaumer -Date: Fri Aug 4 14:10:38 2017 +0200 - - Bug 1381761 - Test data: URIs inherit the CSP even if treated as unique, opaque origins. r=dveditz ---- - .../test/csp/file_data_csp_inheritance.html | 21 +++++++++++++ - dom/security/test/csp/mochitest.ini | 2 ++ - .../test/csp/test_data_csp_inheritance.html | 34 ++++++++++++++++++++++ - 3 files changed, 57 insertions(+) - -diff --git dom/security/test/csp/file_data_csp_inheritance.html dom/security/test/csp/file_data_csp_inheritance.html -new file mode 100644 -index 000000000000..299c30255aa6 ---- /dev/null -+++ dom/security/test/csp/file_data_csp_inheritance.html -@@ -0,0 +1,21 @@ -+ -+ -+ -+ Bug 1381761 - Treating 'data:' documents as unique, opaque origins should still inherit the CSP -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git dom/security/test/csp/mochitest.ini dom/security/test/csp/mochitest.ini -index ba391ad59799..09f80b2969d7 100644 ---- dom/security/test/csp/mochitest.ini -+++ dom/security/test/csp/mochitest.ini -@@ -217,6 +217,7 @@ support-files = - file_ignore_xfo.html^headers^ - file_ro_ignore_xfo.html - file_ro_ignore_xfo.html^headers^ -+ file_data_csp_inheritance.html - file_report_font_cache-1.html - file_report_font_cache-2.html - file_report_font_cache-2.html^headers^ -@@ -308,4 +309,5 @@ tags = mcb - [test_websocket_self.html] - skip-if = toolkit == 'android' - [test_ignore_xfo.html] -+[test_data_csp_inheritance.html] - [test_data_csp_merge.html] -diff --git dom/security/test/csp/test_data_csp_inheritance.html dom/security/test/csp/test_data_csp_inheritance.html -new file mode 100644 -index 000000000000..3afc4f7c02bc ---- /dev/null -+++ dom/security/test/csp/test_data_csp_inheritance.html -@@ -0,0 +1,34 @@ -+ -+ -+ -+ Bug 1381761 - Treating 'data:' documents as unique, opaque origins should still inherit the CSP -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ diff --git a/www/waterfox/files/patch-bug1381815 b/www/waterfox/files/patch-bug1381815 deleted file mode 100644 index 5681303ce451..000000000000 --- a/www/waterfox/files/patch-bug1381815 +++ /dev/null @@ -1,278 +0,0 @@ -commit 165fab2f8596 -Author: Jan Horak -Date: Tue Oct 10 13:35:56 2017 +0200 - - Bug 1381815 - fixing dimensions of radio and checkbox for GTK 3.20+; r=karlt - - In the GTK < 3.20 the size of radio and checkbox toggle is determined by indicator - spacing and indicator size. By GTK 3.20+ it is replaced by standard box model - (padding, margin, border). The patch fixes that while keeping the functionality - for older GTK. The values are also cached by similar way as scrollbar metrics - are cached now. - - The focus is no longer rendered by GTK but by Mozilla code, so the extra - size for toggles has been removed from GetExtraSizeForWidget and toggles - no longer render focus indicator. - - MozReview-Commit-ID: 1Wg5AgHy1Vz - - --HG-- - extra : rebase_source : 81437f45b7d32555942d21fccc9de4a561d85111 ---- - widget/gtk/gtk3drawing.cpp | 121 ++++++++++++++++++++++++++++++---------- - widget/gtk/gtkdrawing.h | 14 +++++ - widget/gtk/nsNativeThemeGTK.cpp | 32 +---------- - 3 files changed, 107 insertions(+), 60 deletions(-) - -diff --git widget/gtk/gtk3drawing.cpp widget/gtk/gtk3drawing.cpp -index 4c562b380095..7968aef920f6 100644 ---- widget/gtk/gtk3drawing.cpp -+++ widget/gtk/gtk3drawing.cpp -@@ -22,6 +22,8 @@ static gboolean checkbox_check_state; - static gboolean notebook_has_tab_gap; - - static ScrollbarGTKMetrics sScrollbarMetrics[2]; -+static ToggleGTKMetrics sCheckboxMetrics; -+static ToggleGTKMetrics sRadioMetrics; - - #define ARROW_UP 0 - #define ARROW_DOWN G_PI -@@ -110,6 +112,8 @@ moz_gtk_refresh() - - sScrollbarMetrics[GTK_ORIENTATION_HORIZONTAL].initialized = false; - sScrollbarMetrics[GTK_ORIENTATION_VERTICAL].initialized = false; -+ sCheckboxMetrics.initialized = false; -+ sRadioMetrics.initialized = false; - } - - gint -@@ -308,33 +312,21 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRectangle* rect, - gboolean isradio, GtkTextDirection direction) - { - GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state); -- gint indicator_size, indicator_spacing; - gint x, y, width, height; -- gint focus_x, focus_y, focus_width, focus_height; - GtkStyleContext *style; - -- GtkWidget *widget = GetWidget(isradio ? MOZ_GTK_RADIOBUTTON_CONTAINER : -- MOZ_GTK_CHECKBUTTON_CONTAINER); -- gtk_widget_style_get(widget, -- "indicator_size", &indicator_size, -- "indicator_spacing", &indicator_spacing, -- nullptr); -+ const ToggleGTKMetrics* metrics = GetToggleMetrics(isradio); - - // XXX we should assert rect->height >= indicator_size too - // after bug 369581 is fixed. -- MOZ_ASSERT(rect->width >= indicator_size, -+ MOZ_ASSERT(rect->width >= metrics->minSizeWithBorder.width, - "GetMinimumWidgetSize was ignored"); - - // Paint it center aligned in the rect. -- x = rect->x + (rect->width - indicator_size) / 2; -- y = rect->y + (rect->height - indicator_size) / 2; -- width = indicator_size; -- height = indicator_size; -- -- focus_x = x - indicator_spacing; -- focus_y = y - indicator_spacing; -- focus_width = width + 2 * indicator_spacing; -- focus_height = height + 2 * indicator_spacing; -+ width = metrics->minSizeWithBorder.width; -+ height = metrics->minSizeWithBorder.height; -+ x = rect->x + (rect->width - width) / 2; -+ y = rect->y + (rect->height - height) / 2; - - if (selected) - state_flags = static_cast(state_flags|checkbox_check_state); -@@ -348,20 +340,25 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRectangle* rect, - if (gtk_check_version(3, 20, 0) == nullptr) { - gtk_render_background(style, cr, x, y, width, height); - gtk_render_frame(style, cr, x, y, width, height); -- } -- -- if (isradio) { -- gtk_render_option(style, cr, x, y, width, height); -- if (state->focused) { -- gtk_render_focus(style, cr, focus_x, focus_y, -- focus_width, focus_height); -+ // Indicator is inset by the toggle's padding and border. -+ gint indicator_x = x + metrics->borderAndPadding.left; -+ gint indicator_y = y + metrics->borderAndPadding.top; -+ gint indicator_width = metrics->minSizeWithBorder.width - -+ metrics->borderAndPadding.left - metrics->borderAndPadding.right; -+ gint indicator_height = metrics->minSizeWithBorder.height - -+ metrics->borderAndPadding.top - metrics->borderAndPadding.bottom; -+ if (isradio) { -+ gtk_render_option(style, cr, indicator_x, indicator_y, -+ indicator_width, indicator_height); -+ } else { -+ gtk_render_check(style, cr, indicator_x, indicator_y, -+ indicator_width, indicator_height); - } -- } -- else { -- gtk_render_check(style, cr, x, y, width, height); -- if (state->focused) { -- gtk_render_focus(style, cr, -- focus_x, focus_y, focus_width, focus_height); -+ } else { -+ if (isradio) { -+ gtk_render_option(style, cr, x, y, width, height); -+ } else { -+ gtk_render_check(style, cr, x, y, width, height); - } - } - -@@ -2514,6 +2511,68 @@ SizeFromLengthAndBreadth(GtkOrientation aOrientation, - MozGtkSize({aLength, aBreadth}) : MozGtkSize({aBreadth, aLength}); - } - -+const ToggleGTKMetrics* -+GetToggleMetrics(bool isRadio) -+{ -+ ToggleGTKMetrics* metrics; -+ if (isRadio) { -+ metrics = &sRadioMetrics; -+ } else { -+ metrics = &sCheckboxMetrics; -+ } -+ if (metrics->initialized) -+ return metrics; -+ -+ metrics->initialized = true; -+ if (gtk_check_version(3,20,0) == nullptr) { -+ GtkStyleContext* style; -+ if (isRadio) { -+ style = GetStyleContext(MOZ_GTK_RADIOBUTTON); -+ } else { -+ style = GetStyleContext(MOZ_GTK_CHECKBUTTON); -+ } -+ GtkStateFlags state_flags = gtk_style_context_get_state(style); -+ gtk_style_context_get(style, state_flags, -+ "min-height",&(metrics->minSizeWithBorder.height), -+ "min-width", &(metrics->minSizeWithBorder.width), -+ nullptr); -+ // Fallback to indicator size if min dimensions are zero -+ if (metrics->minSizeWithBorder.height == 0 || -+ metrics->minSizeWithBorder.width == 0) { -+ gint indicator_size; -+ gtk_widget_style_get(GetWidget(MOZ_GTK_CHECKBUTTON_CONTAINER), -+ "indicator_size", &indicator_size, nullptr); -+ if (metrics->minSizeWithBorder.height == 0) { -+ metrics->minSizeWithBorder.height = indicator_size; -+ } -+ if (metrics->minSizeWithBorder.width == 0) { -+ metrics->minSizeWithBorder.width = indicator_size; -+ } -+ } -+ -+ GtkBorder border, padding; -+ gtk_style_context_get_border(style, state_flags, &border); -+ gtk_style_context_get_padding(style, state_flags, &padding); -+ metrics->borderAndPadding.left = border.left + padding.left; -+ metrics->borderAndPadding.right = border.right + padding.right; -+ metrics->borderAndPadding.top = border.top + padding.top; -+ metrics->borderAndPadding.bottom = border.bottom + padding.bottom; -+ metrics->minSizeWithBorder.width += metrics->borderAndPadding.left + -+ metrics->borderAndPadding.right; -+ metrics->minSizeWithBorder.height += metrics->borderAndPadding.top + -+ metrics->borderAndPadding.bottom; -+ } else { -+ gint indicator_size, indicator_spacing; -+ gtk_widget_style_get(GetWidget(MOZ_GTK_CHECKBUTTON_CONTAINER), -+ "indicator_size", &indicator_size, -+ "indicator_spacing", &indicator_spacing, -+ nullptr); -+ metrics->minSizeWithBorder.width = -+ metrics->minSizeWithBorder.height = indicator_size; -+ } -+ return metrics; -+} -+ - const ScrollbarGTKMetrics* - GetScrollbarMetrics(GtkOrientation aOrientation) - { -diff --git widget/gtk/gtkdrawing.h widget/gtk/gtkdrawing.h -index 42dbf8287499..909c18f7f525 100644 ---- widget/gtk/gtkdrawing.h -+++ widget/gtk/gtkdrawing.h -@@ -83,6 +83,12 @@ typedef struct { - } border; - } ScrollbarGTKMetrics; - -+typedef struct { -+ bool initialized; -+ MozGtkSize minSizeWithBorder; -+ GtkBorder borderAndPadding; -+} ToggleGTKMetrics; -+ - typedef enum { - MOZ_GTK_STEPPER_DOWN = 1 << 0, - MOZ_GTK_STEPPER_BOTTOM = 1 << 1, -@@ -391,6 +397,14 @@ moz_gtk_get_tab_border(gint* left, gint* top, gint* right, gint* bottom, - gint - moz_gtk_checkbox_get_metrics(gint* indicator_size, gint* indicator_spacing); - -+/** -+ * Get metrics of the toggle (radio or checkbox) -+ * isRadio: [IN] true when requesting metrics for the radio button -+ * returns: pointer to ToggleGTKMetrics struct -+ */ -+const ToggleGTKMetrics* -+GetToggleMetrics(bool isRadio); -+ - /** - * Get the desired size of a GtkRadioButton - * indicator_size: [OUT] the indicator size -diff --git widget/gtk/nsNativeThemeGTK.cpp widget/gtk/nsNativeThemeGTK.cpp -index 06e62efbcda8..da3eaa71a6b4 100644 ---- widget/gtk/nsNativeThemeGTK.cpp -+++ widget/gtk/nsNativeThemeGTK.cpp -@@ -1020,24 +1020,6 @@ nsNativeThemeGTK::GetExtraSizeForWidget(nsIFrame* aFrame, uint8_t aWidgetType, - aExtra->left = aExtra->right = 1; - break; - -- // Include the indicator spacing (the padding around the control). -- case NS_THEME_CHECKBOX: -- case NS_THEME_RADIO: -- { -- gint indicator_size, indicator_spacing; -- -- if (aWidgetType == NS_THEME_CHECKBOX) { -- moz_gtk_checkbox_get_metrics(&indicator_size, &indicator_spacing); -- } else { -- moz_gtk_radio_get_metrics(&indicator_size, &indicator_spacing); -- } -- -- aExtra->top = indicator_spacing; -- aExtra->right = indicator_spacing; -- aExtra->bottom = indicator_spacing; -- aExtra->left = indicator_spacing; -- break; -- } - case NS_THEME_BUTTON : - { - if (IsDefaultButton(aFrame)) { -@@ -1595,17 +1577,9 @@ nsNativeThemeGTK::GetMinimumWidgetSize(nsPresContext* aPresContext, - case NS_THEME_CHECKBOX: - case NS_THEME_RADIO: - { -- gint indicator_size, indicator_spacing; -- -- if (aWidgetType == NS_THEME_CHECKBOX) { -- moz_gtk_checkbox_get_metrics(&indicator_size, &indicator_spacing); -- } else { -- moz_gtk_radio_get_metrics(&indicator_size, &indicator_spacing); -- } -- -- // Include space for the indicator and the padding around it. -- aResult->width = indicator_size; -- aResult->height = indicator_size; -+ const ToggleGTKMetrics* metrics = GetToggleMetrics(aWidgetType == NS_THEME_RADIO); -+ aResult->width = metrics->minSizeWithBorder.width; -+ aResult->height = metrics->minSizeWithBorder.height; - } - break; - case NS_THEME_TOOLBARBUTTON_DROPDOWN: diff --git a/www/waterfox/files/patch-bug1382359 b/www/waterfox/files/patch-bug1382359 deleted file mode 100644 index 27cf995ec543..000000000000 --- a/www/waterfox/files/patch-bug1382359 +++ /dev/null @@ -1,138 +0,0 @@ -commit dd4fb3ba9f14 -Author: Georg Koppen -Date: Thu Mar 1 09:44:30 2018 +0100 - - Bug 1382359: Treat .onion as a secure context - - Websites which collect passwords but don't use HTTPS start showing scary - warnings from Firefox 51 onwards and mixed context blocking has been - available even longer. - - .onion sites without HTTPS support are affected as well, although their - traffic is encrypted and authenticated. This patch addresses this - shortcoming by making sure .onion sites are treated as potentially - trustworthy origins. - - The secure context specification - (https://w3c.github.io/webappsec-secure-contexts/) is pretty much focused - on tying security and trustworthiness to the protocol over which domains - are accessed. However, it is not obvious why .onion sites should not be - treated as potentially trustworthy given: - - "A potentially trustworthy origin is one which a user agent can - generally trust as delivering data securely. - - This algorithms [sic] considers certain hosts, scheme, and origins as - potentially trustworthy, even though they might not be authenticated and - encrypted in the traditional sense." - (https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy) - - We use step 8 in the algorithm to establish trustworthiness of .onion - sites by whitelisting them given the encrypted and authenticated nature - of their traffic. ---- - dom/html/HTMLFormElement.cpp | 4 ++++ - dom/security/nsContentSecurityManager.cpp | 7 +++++++ - dom/security/nsMixedContentBlocker.cpp | 29 +++++++++++++++++++++++++++++ - dom/security/nsMixedContentBlocker.h | 1 + - 4 files changed, 41 insertions(+) - -diff --git dom/html/HTMLFormElement.cpp dom/html/HTMLFormElement.cpp -index 02b3553c8a14..0e00b961ed45 100644 ---- dom/html/HTMLFormElement.cpp -+++ dom/html/HTMLFormElement.cpp -@@ -867,6 +867,10 @@ HTMLFormElement::DoSecureToInsecureSubmitCheck(nsIURI* aActionURL, - return NS_OK; - } - -+ if (nsMixedContentBlocker::IsPotentiallyTrustworthyOnion(aActionURL)) { -+ return NS_OK; -+ } -+ - nsCOMPtr window = OwnerDoc()->GetWindow(); - if (!window) { - return NS_ERROR_FAILURE; -diff --git dom/security/nsContentSecurityManager.cpp dom/security/nsContentSecurityManager.cpp -index ed83d490ca3f..d0e50d51bfd2 100644 ---- dom/security/nsContentSecurityManager.cpp -+++ dom/security/nsContentSecurityManager.cpp -@@ -13,6 +13,7 @@ - #include "nsIImageLoadingContent.h" - - #include "mozilla/dom/Element.h" -+#include "mozilla/dom/nsMixedContentBlocker.h" - - NS_IMPL_ISUPPORTS(nsContentSecurityManager, - nsIContentSecurityManager, -@@ -879,6 +880,12 @@ nsContentSecurityManager::IsOriginPotentiallyTrustworthy(nsIPrincipal* aPrincipa - } - } - } -+ // Maybe we have a .onion URL. Treat it as whitelisted as well if -+ // `dom.securecontext.whitelist_onions` is `true`. -+ if (nsMixedContentBlocker::IsPotentiallyTrustworthyOnion(uri)) { -+ *aIsTrustWorthy = true; -+ return NS_OK; -+ } - } - - return NS_OK; -diff --git dom/security/nsMixedContentBlocker.cpp dom/security/nsMixedContentBlocker.cpp -index 918a6ce53132..0361e744c800 100644 ---- dom/security/nsMixedContentBlocker.cpp -+++ dom/security/nsMixedContentBlocker.cpp -@@ -395,6 +395,28 @@ nsMixedContentBlocker::IsPotentiallyTrustworthyLoopbackURL(nsIURI* aURL) { - return host.EqualsLiteral("127.0.0.1") || host.EqualsLiteral("::1"); - } - -+/* Maybe we have a .onion URL. Treat it as whitelisted as well if -+ * `dom.securecontext.whitelist_onions` is `true`. -+ */ -+bool -+nsMixedContentBlocker::IsPotentiallyTrustworthyOnion(nsIURI* aURL) { -+ static bool sInited = false; -+ static bool sWhiteListOnions = false; -+ if (!sInited) { -+ Preferences::AddBoolVarCache(&sWhiteListOnions, -+ "dom.securecontext.whitelist_onions"); -+ sInited = true; -+ } -+ if (!sWhiteListOnions) { -+ return false; -+ } -+ -+ nsAutoCString host; -+ nsresult rv = aURL->GetHost(host); -+ NS_ENSURE_SUCCESS(rv, false); -+ return StringEndsWith(host, NS_LITERAL_CSTRING(".onion")); -+} -+ - /* Static version of ShouldLoad() that contains all the Mixed Content Blocker - * logic. Called from non-static ShouldLoad(). - */ -@@ -725,6 +747,13 @@ nsMixedContentBlocker::ShouldLoad(bool aHadInsecureImageRedirect, - return NS_OK; - } - -+ // .onion URLs are encrypted and authenticated. Don't treat them as mixed -+ // content if potentially trustworthy (i.e. whitelisted). -+ if (isHttpScheme && IsPotentiallyTrustworthyOnion(innerContentLocation)) { -+ *aDecision = ACCEPT; -+ return NS_OK; -+ } -+ - // The page might have set the CSP directive 'upgrade-insecure-requests'. In such - // a case allow the http: load to succeed with the promise that the channel will - // get upgraded to https before fetching any data from the netwerk. -diff --git dom/security/nsMixedContentBlocker.h dom/security/nsMixedContentBlocker.h -index b7e4a7457bd2..a9b4dbdb612e 100644 ---- dom/security/nsMixedContentBlocker.h -+++ dom/security/nsMixedContentBlocker.h -@@ -48,6 +48,7 @@ public: - // See: - // https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy - static bool IsPotentiallyTrustworthyLoopbackURL(nsIURI* aURL); -+ static bool IsPotentiallyTrustworthyOnion(nsIURI* aURL); - - /* Static version of ShouldLoad() that contains all the Mixed Content Blocker - * logic. Called from non-static ShouldLoad(). diff --git a/www/waterfox/files/patch-bug1383501 b/www/waterfox/files/patch-bug1383501 deleted file mode 100644 index 372046df120b..000000000000 --- a/www/waterfox/files/patch-bug1383501 +++ /dev/null @@ -1,83 +0,0 @@ -commit 8ba0e2ee02b0 -Author: Aaron Klotz -Date: Wed Oct 4 09:12:25 2017 -0600 - - Bug 1383501 - Do not crash when TabParent::RecvPDocAccessibleConstructor receives a null COM proxy sent to the parent process. r=jimm, a=ritu - - MozReview-Commit-ID: 5IOuLXc375T - - --HG-- - extra : source : e2a6e2ddfa184b5a1f410408d7232ed0041a360f ---- - accessible/ipc/win/ProxyAccessible.cpp | 2 +- - accessible/ipc/win/ProxyAccessible.h | 13 ++++++++++++- - dom/ipc/TabParent.cpp | 2 ++ - 3 files changed, 15 insertions(+), 2 deletions(-) - -diff --git accessible/ipc/win/ProxyAccessible.cpp accessible/ipc/win/ProxyAccessible.cpp -index 0942e280ea30..383ece99fb0c 100644 ---- accessible/ipc/win/ProxyAccessible.cpp -+++ accessible/ipc/win/ProxyAccessible.cpp -@@ -34,7 +34,7 @@ ProxyAccessible::GetCOMInterface(void** aOutAccessible) const - return false; - } - -- if (!mCOMProxy) { -+ if (!mCOMProxy && mSafeToRecurse) { - // See if we can lazily obtain a COM proxy - AccessibleWrap* wrap = WrapperFor(this); - bool isDefunct = false; -diff --git accessible/ipc/win/ProxyAccessible.h accessible/ipc/win/ProxyAccessible.h -index 83f1e6093253..4fd897e588fe 100644 ---- accessible/ipc/win/ProxyAccessible.h -+++ accessible/ipc/win/ProxyAccessible.h -@@ -27,6 +27,7 @@ public: - ProxyAccessible(uint64_t aID, ProxyAccessible* aParent, - DocAccessibleParent* aDoc, role aRole, uint32_t aInterfaces) - : ProxyAccessibleBase(aID, aParent, aDoc, aRole, aInterfaces) -+ , mSafeToRecurse(true) - { - MOZ_COUNT_CTOR(ProxyAccessible); - } -@@ -40,7 +41,16 @@ public: - - bool GetCOMInterface(void** aOutAccessible) const; - void SetCOMInterface(const RefPtr& aIAccessible) -- { mCOMProxy = aIAccessible; } -+ { -+ if (aIAccessible) { -+ mCOMProxy = aIAccessible; -+ } else { -+ // If we were supposed to be receiving an interface (hence the call to -+ // this function), but the interface turns out to be null, then we're -+ // broken for some reason. -+ mSafeToRecurse = false; -+ } -+ } - - protected: - explicit ProxyAccessible(DocAccessibleParent* aThisAsDoc) -@@ -49,6 +59,7 @@ protected: - - private: - RefPtr mCOMProxy; -+ bool mSafeToRecurse; - }; - - } -diff --git dom/ipc/TabParent.cpp dom/ipc/TabParent.cpp -index 7fc5689e6211..d8733a377219 100644 ---- dom/ipc/TabParent.cpp -+++ dom/ipc/TabParent.cpp -@@ -972,9 +972,11 @@ TabParent::RecvPDocAccessibleConstructor(PDocAccessibleParent* aDoc, - #ifdef XP_WIN - a11y::WrapperFor(doc)->SetID(aMsaaID); - MOZ_ASSERT(!aDocCOMProxy.IsNull()); -+#ifdef NIGHTLY_BUILD - if (aDocCOMProxy.IsNull()) { - return IPC_FAIL(this, "Constructing a top-level PDocAccessible with null COM proxy"); - } -+#endif - - RefPtr proxy(aDocCOMProxy.Get()); - doc->SetCOMInterface(proxy); diff --git a/www/waterfox/files/patch-bug1384121 b/www/waterfox/files/patch-bug1384121 deleted file mode 100644 index 94a261585850..000000000000 --- a/www/waterfox/files/patch-bug1384121 +++ /dev/null @@ -1,218 +0,0 @@ -commit 485ed2f2b015 -Author: Jan de Mooij -Date: Mon Sep 18 15:08:44 2017 +0200 - - Bug 1384121 part 1 - Don't sweep ObjectGroups under IC helper functions. r=bhackett ---- - js/src/jit/IonCacheIRCompiler.cpp | 4 ++-- - js/src/vm/ObjectGroup.h | 2 ++ - js/src/vm/TypeInference-inl.h | 29 ++++++++++++++++++++++------- - js/src/vm/UnboxedObject.cpp | 2 +- - 4 files changed, 27 insertions(+), 10 deletions(-) - -diff --git js/src/jit/IonCacheIRCompiler.cpp js/src/jit/IonCacheIRCompiler.cpp -index b11aed7966b6..bbfbdae57b12 100644 ---- js/src/jit/IonCacheIRCompiler.cpp -+++ js/src/jit/IonCacheIRCompiler.cpp -@@ -1324,9 +1324,9 @@ IonCacheIRCompiler::emitCallStringSplitResult() - static bool - GroupHasPropertyTypes(ObjectGroup* group, jsid* id, Value* v) - { -- if (group->unknownProperties()) -+ if (group->unknownPropertiesDontCheckGeneration()) - return true; -- HeapTypeSet* propTypes = group->maybeGetProperty(*id); -+ HeapTypeSet* propTypes = group->maybeGetPropertyDontCheckGeneration(*id); - if (!propTypes) - return true; - if (!propTypes->nonConstantProperty()) -diff --git js/src/vm/ObjectGroup.h js/src/vm/ObjectGroup.h -index 237b5a152576..0eba71ee084f 100644 ---- js/src/vm/ObjectGroup.h -+++ js/src/vm/ObjectGroup.h -@@ -390,6 +390,7 @@ class ObjectGroup : public gc::TenuredCell - - /* Get a property only if it already exists. */ - MOZ_ALWAYS_INLINE HeapTypeSet* maybeGetProperty(jsid id); -+ MOZ_ALWAYS_INLINE HeapTypeSet* maybeGetPropertyDontCheckGeneration(jsid id); - - /* - * Iterate through the group's properties. getPropertyCount overapproximates -@@ -471,6 +472,7 @@ class ObjectGroup : public gc::TenuredCell - } - - inline uint32_t basePropertyCount(); -+ inline uint32_t basePropertyCountDontCheckGeneration(); - - private: - inline void setBasePropertyCount(uint32_t count); -diff --git js/src/vm/TypeInference-inl.h js/src/vm/TypeInference-inl.h -index f7cd3459ef19..f2b0b9a52fbc 100644 ---- js/src/vm/TypeInference-inl.h -+++ js/src/vm/TypeInference-inl.h -@@ -369,10 +369,10 @@ TypeMonitorCall(JSContext* cx, const js::CallArgs& args, bool constructing) - MOZ_ALWAYS_INLINE bool - TrackPropertyTypes(JSObject* obj, jsid id) - { -- if (obj->hasLazyGroup() || obj->group()->unknownProperties()) -+ if (obj->hasLazyGroup() || obj->group()->unknownPropertiesDontCheckGeneration()) - return false; - -- if (obj->isSingleton() && !obj->group()->maybeGetProperty(id)) -+ if (obj->isSingleton() && !obj->group()->maybeGetPropertyDontCheckGeneration(id)) - return false; - - return true; -@@ -410,7 +410,7 @@ HasTrackedPropertyType(JSObject* obj, jsid id, TypeSet::Type type) - MOZ_ASSERT(id == IdToTypeId(id)); - MOZ_ASSERT(TrackPropertyTypes(obj, id)); - -- if (HeapTypeSet* types = obj->group()->maybeGetProperty(id)) { -+ if (HeapTypeSet* types = obj->group()->maybeGetPropertyDontCheckGeneration(id)) { - if (!types->hasType(type)) - return false; - // Non-constant properties are only relevant for singleton objects. -@@ -1074,10 +1074,18 @@ TypeSet::getObjectClass(unsigned i) const - // ObjectGroup - ///////////////////////////////////////////////////////////////////// - -+inline uint32_t -+ObjectGroup::basePropertyCountDontCheckGeneration() -+{ -+ uint32_t flags = flagsDontCheckGeneration(); -+ return (flags & OBJECT_FLAG_PROPERTY_COUNT_MASK) >> OBJECT_FLAG_PROPERTY_COUNT_SHIFT; -+} -+ - inline uint32_t - ObjectGroup::basePropertyCount() - { -- return (flags() & OBJECT_FLAG_PROPERTY_COUNT_MASK) >> OBJECT_FLAG_PROPERTY_COUNT_SHIFT; -+ maybeSweep(nullptr); -+ return basePropertyCountDontCheckGeneration(); - } - - inline void -@@ -1134,14 +1142,14 @@ ObjectGroup::getProperty(JSContext* cx, JSObject* obj, jsid id) - } - - MOZ_ALWAYS_INLINE HeapTypeSet* --ObjectGroup::maybeGetProperty(jsid id) -+ObjectGroup::maybeGetPropertyDontCheckGeneration(jsid id) - { - MOZ_ASSERT(JSID_IS_VOID(id) || JSID_IS_EMPTY(id) || JSID_IS_STRING(id) || JSID_IS_SYMBOL(id)); - MOZ_ASSERT_IF(!JSID_IS_EMPTY(id), id == IdToTypeId(id)); -- MOZ_ASSERT(!unknownProperties()); -+ MOZ_ASSERT(!unknownPropertiesDontCheckGeneration()); - - Property* prop = TypeHashSet::Lookup -- (propertySet, basePropertyCount(), id); -+ (propertySet, basePropertyCountDontCheckGeneration(), id); - - if (!prop) - return nullptr; -@@ -1150,6 +1158,13 @@ ObjectGroup::maybeGetProperty(jsid id) - return &prop->types; - } - -+MOZ_ALWAYS_INLINE HeapTypeSet* -+ObjectGroup::maybeGetProperty(jsid id) -+{ -+ maybeSweep(nullptr); -+ return maybeGetPropertyDontCheckGeneration(id); -+} -+ - inline unsigned - ObjectGroup::getPropertyCount() - { -diff --git js/src/vm/UnboxedObject.cpp js/src/vm/UnboxedObject.cpp -index c155b7dc47c9..4e007489a67e 100644 ---- js/src/vm/UnboxedObject.cpp -+++ js/src/vm/UnboxedObject.cpp -@@ -363,7 +363,7 @@ UnboxedPlainObject::ensureExpando(JSContext* cx, Handle obj - bool - UnboxedPlainObject::containsUnboxedOrExpandoProperty(JSContext* cx, jsid id) const - { -- if (layout().lookup(id)) -+ if (layoutDontCheckGeneration().lookup(id)) - return true; - - if (maybeExpando() && maybeExpando()->containsShapeOrElement(cx, id)) -commit e240cf665f74 -Author: Jan de Mooij -Date: Wed Sep 20 12:13:54 2017 +0200 - - Bug 1384121 part 2 - Add asserts to catch similar bugs and fix some false positives. r=nbp ---- - js/src/jit/Bailouts.cpp | 4 ---- - js/src/jit/JSJitFrameIter.cpp | 2 ++ - js/src/jit/VMFunctions.cpp | 1 - - js/src/jit/arm/Trampoline-arm.cpp | 9 ++++++--- - js/src/jit/arm64/Trampoline-arm64.cpp | 9 ++++++--- - js/src/jit/mips32/Trampoline-mips32.cpp | 9 ++++++--- - js/src/jit/mips64/Trampoline-mips64.cpp | 9 ++++++--- - js/src/jit/x64/Trampoline-x64.cpp | 9 ++++++--- - js/src/jit/x86/Trampoline-x86.cpp | 9 ++++++--- - js/src/vm/ObjectGroup-inl.h | 1 + - js/src/vm/Stack.cpp | 2 ++ - js/src/vm/TypeInference.cpp | 3 +++ - 12 files changed, 44 insertions(+), 23 deletions(-) - -diff --git js/src/jit/JSJitFrameIter.cpp js/src/jit/JSJitFrameIter.cpp -index 3774b327d21c..ae76bc2abaf0 100644 ---- js/src/jit/JitFrameIterator.cpp -+++ js/src/jit/JitFrameIterator.cpp -@@ -25,6 +25,8 @@ JSJitFrameIter::JSJitFrameIter(const JitActivation* activation) - current_ = activation_->bailoutData()->fp(); - frameSize_ = activation_->bailoutData()->topFrameSize(); - type_ = JitFrame_Bailout; -+ } else { -+ MOZ_ASSERT(!TlsContext.get()->inUnsafeCallWithABI); - } - } - -diff --git js/src/vm/ObjectGroup-inl.h js/src/vm/ObjectGroup-inl.h -index 7e023ecbad8e..d7caa63d8725 100644 ---- js/src/vm/ObjectGroup-inl.h -+++ js/src/vm/ObjectGroup-inl.h -@@ -16,6 +16,7 @@ ObjectGroup::needsSweep() - { - // Note: this can be called off thread during compacting GCs, in which case - // nothing will be running on the active thread. -+ MOZ_ASSERT(!TlsContext.get()->inUnsafeCallWithABI); - return generation() != zoneFromAnyThread()->types.generation; - } - -diff --git js/src/vm/Stack.cpp js/src/vm/Stack.cpp -index d3c0038db5ca..0406195abd56 100644 ---- js/src/vm/Stack.cpp -+++ js/src/vm/Stack.cpp -@@ -605,6 +605,8 @@ FrameIter::popInterpreterFrame() - void - FrameIter::settleOnActivation() - { -+ MOZ_ASSERT(!data_.cx_->inUnsafeCallWithABI); -+ - while (true) { - if (data_.activations_.done()) { - data_.state_ = DONE; -diff --git js/src/vm/TypeInference.cpp js/src/vm/TypeInference.cpp -index f0562a4355f8..eba18e34397e 100644 ---- js/src/vm/TypeInference.cpp -+++ js/src/vm/TypeInference.cpp -@@ -4428,6 +4428,8 @@ ObjectGroup::sweep(AutoClearTypeInferenceStateOnOOM* oom) - /* static */ void - JSScript::maybeSweepTypes(AutoClearTypeInferenceStateOnOOM* oom) - { -+ MOZ_ASSERT(!TlsContext.get()->inUnsafeCallWithABI); -+ - if (!types_ || typesGeneration() == zone()->types.generation) - return; - -@@ -4611,6 +4613,7 @@ AutoClearTypeInferenceStateOnOOM::AutoClearTypeInferenceStateOnOOM(Zone* zone) - : zone(zone), oom(false) - { - MOZ_RELEASE_ASSERT(CurrentThreadCanAccessZone(zone)); -+ MOZ_ASSERT(!TlsContext.get()->inUnsafeCallWithABI); - zone->types.setSweepingTypes(true); - } - diff --git a/www/waterfox/files/patch-bug1384701 b/www/waterfox/files/patch-bug1384701 deleted file mode 100644 index 142d5430d266..000000000000 --- a/www/waterfox/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 - #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/waterfox/files/patch-bug1385013 b/www/waterfox/files/patch-bug1385013 deleted file mode 100644 index 66307f92ac6a..000000000000 --- a/www/waterfox/files/patch-bug1385013 +++ /dev/null @@ -1,92 +0,0 @@ -commit 09e1ad759b21 -Author: Hiroyuki Ikezoe -Date: Wed Oct 18 10:43:22 2017 +0900 - - Bug 1385013 - Check all vertexes for the target frame are outside of the parent frame if the target frame is empty. r=birtles, a=ritu - - We create empty rectangle (zero-height or zero-width) frame for element which - has no content inside it, e.g. '

'. And nsRect.Intersects returns false - if either of the rectangles are empty, so if we check - !transformedRect.Intersects(scrollableRect) and transformedRect is empty, we - will end up returning true from IsFrameScrolledOutOfView even though the point - represented by the empty transformedRect might be inside the - scrollableRect. - - The reftest causes timeout without this fix since the animation never updates - after the initial paint. - - MozReview-Commit-ID: FymFJfjxyGc - - --HG-- - extra : source : 69e2ab081d3d71ef131f0ce878ee7830ae881d08 ---- - layout/generic/nsFrame.cpp | 11 +++++++++- - .../animation-on-empty-height-frame.html | 25 ++++++++++++++++++++++ - layout/reftests/css-animations/reftest.list | 1 + - 3 files changed, 36 insertions(+), 1 deletion(-) - -diff --git layout/generic/nsFrame.cpp layout/generic/nsFrame.cpp -index dbfd61b7e142..991ccbceeb65 100644 ---- layout/generic/nsFrame.cpp -+++ layout/generic/nsFrame.cpp -@@ -10555,7 +10555,16 @@ IsFrameScrolledOutOfView(nsIFrame *aFrame) - scrollableParent); - - nsRect scrollableRect = scrollableParent->GetVisualOverflowRect(); -- if (!transformedRect.Intersects(scrollableRect)) { -+ if (transformedRect.IsEmpty()) { -+ // If the transformed rect is empty it represents a line or a point that we -+ // should check is outside the the scrollable rect. -+ if (transformedRect.x > scrollableRect.XMost() || -+ transformedRect.y > scrollableRect.YMost() || -+ scrollableRect.x > transformedRect.XMost() || -+ scrollableRect.y > transformedRect.YMost()) { -+ return true; -+ } -+ } else if (!transformedRect.Intersects(scrollableRect)) { - return true; - } - -diff --git layout/reftests/css-animations/animation-on-empty-height-frame.html layout/reftests/css-animations/animation-on-empty-height-frame.html -new file mode 100644 -index 000000000000..eb3f58127b16 ---- /dev/null -+++ layout/reftests/css-animations/animation-on-empty-height-frame.html -@@ -0,0 +1,25 @@ -+ -+ -+ -+ -+ -+ -+ -diff --git layout/reftests/css-animations/reftest.list layout/reftests/css-animations/reftest.list -index 61e3e9ea6101..ed615645f707 100644 ---- layout/reftests/css-animations/reftest.list -+++ layout/reftests/css-animations/reftest.list -@@ -4,6 +4,7 @@ skip-if(stylo) fails == print-no-animations.html print-no-animations-ref.html # - skip-if(stylo) fails != print-no-animations.html print-no-animations-notref.html # reftest harness doesn't actually make pres context non-dynamic for reftest-paged tests. Bug 1374154 for stylo - == animate-opacity.html animate-opacity-ref.html - == animate-preserves3d.html animate-preserves3d-ref.html -+== animation-on-empty-height-frame.html about:blank - == in-visibility-hidden-animation.html in-visibility-hidden-animation-ref.html - == in-visibility-hidden-animation-pseudo-element.html in-visibility-hidden-animation-pseudo-element-ref.html - == partially-out-of-view-animation.html partially-out-of-view-animation-ref.html diff --git a/www/waterfox/files/patch-bug1385609 b/www/waterfox/files/patch-bug1385609 deleted file mode 100644 index 0fd7ca695a5a..000000000000 --- a/www/waterfox/files/patch-bug1385609 +++ /dev/null @@ -1,102 +0,0 @@ -commit dd42019824ed -Author: Thomas Nguyen -Date: Wed Aug 30 18:04:10 2017 +0800 - - Bug 1385609 - Fix backoff issue that makes SB lists no longer update r=francois - - The issue occurs when nsITimer is fired earlier than the backoff time. In that - case, the update doesn't proceed and we never make another attempt because the - backoff update timer was oneshot. - - We fix the issue in two ways: - - - Add a tolerance of 1 second in case the timer fires too early. - - Set another oneshot timer whenever we are prevented from updating due to - backoff. - - MozReview-Commit-ID: E2ogNRsHJVK - - --HG-- - extra : rebase_source : c81fa77934f6c39e1c5d07b19785a01546e02542 ---- - toolkit/components/url-classifier/nsUrlClassifierLib.js | 12 +++++++++--- - .../components/url-classifier/nsUrlClassifierListManager.js | 5 ++++- - toolkit/components/url-classifier/tests/unit/test_backoff.js | 2 +- - 3 files changed, 14 insertions(+), 5 deletions(-) - -diff --git toolkit/components/url-classifier/nsUrlClassifierLib.js toolkit/components/url-classifier/nsUrlClassifierLib.js -index e2457d85474c..38d1977e4641 100644 ---- toolkit/components/url-classifier/nsUrlClassifierLib.js -+++ toolkit/components/url-classifier/nsUrlClassifierLib.js -@@ -77,17 +77,20 @@ this.HTTP_TEMPORARY_REDIRECT = 307; - * @param timeoutIncrement Number time (ms) the starting timeout period - * we double this time for consecutive errors - * @param maxTimeout Number time (ms) maximum timeout period -+ * @param tolerance Checking next request tolerance. - */ - this.RequestBackoff = - function RequestBackoff(maxErrors, retryIncrement, - maxRequests, requestPeriod, -- timeoutIncrement, maxTimeout) { -+ timeoutIncrement, maxTimeout, -+ tolerance) { - this.MAX_ERRORS_ = maxErrors; - this.RETRY_INCREMENT_ = retryIncrement; - this.MAX_REQUESTS_ = maxRequests; - this.REQUEST_PERIOD_ = requestPeriod; - this.TIMEOUT_INCREMENT_ = timeoutIncrement; - this.MAX_TIMEOUT_ = maxTimeout; -+ this.TOLERANCE_ = tolerance; - - // Queue of ints keeping the time of all requests - this.requestTimes_ = []; -@@ -111,7 +114,9 @@ RequestBackoff.prototype.reset = function() { - */ - RequestBackoff.prototype.canMakeRequest = function() { - var now = Date.now(); -- if (now < this.nextRequestTime_) { -+ // Note that nsITimer delay is approximate: the timer can be fired before the -+ // requested time has elapsed. So, give it a tolerance -+ if (now + this.TOLERANCE_ < this.nextRequestTime_) { - return false; - } - -@@ -180,7 +185,8 @@ function RequestBackoffV4(maxRequests, requestPeriod) { - maxRequests /* num requests */, - requestPeriod /* request time, 60 min */, - backoffInterval /* backoff interval, 60 min */, -- 24 * 60 * 60 * 1000 /* max backoff, 24hr */); -+ 24 * 60 * 60 * 1000 /* max backoff, 24hr */, -+ 1000 /* tolerance of 1 sec */); - } - - // Expose this whole component. -diff --git toolkit/components/url-classifier/nsUrlClassifierListManager.js toolkit/components/url-classifier/nsUrlClassifierListManager.js -index 1e976b8597b7..5f10933163b6 100644 ---- toolkit/components/url-classifier/nsUrlClassifierListManager.js -+++ toolkit/components/url-classifier/nsUrlClassifierListManager.js -@@ -236,7 +236,10 @@ PROT_ListManager.prototype.setUpdateCheckTimer = function(updateUrl, - .createInstance(Ci.nsITimer); - this.updateCheckers_[updateUrl].initWithCallback(() => { - this.updateCheckers_[updateUrl] = null; -- this.checkForUpdates(updateUrl); -+ if (updateUrl && !this.checkForUpdates(updateUrl)) { -+ // Make another attempt later. -+ this.setUpdateCheckTimer(updateUrl, this.updateInterval); -+ } - }, delay, Ci.nsITimer.TYPE_ONE_SHOT); - } - /** -diff --git toolkit/components/url-classifier/tests/unit/test_backoff.js toolkit/components/url-classifier/tests/unit/test_backoff.js -index 365568c479e9..205507e83dd6 100644 ---- toolkit/components/url-classifier/tests/unit/test_backoff.js -+++ toolkit/components/url-classifier/tests/unit/test_backoff.js -@@ -11,7 +11,7 @@ function setNow(time) { - function run_test() { - // 3 errors, 1ms retry period, max 3 requests per ten milliseconds, - // 5ms backoff interval, 19ms max delay -- var rb = new jslib.RequestBackoff(3, 1, 3, 10, 5, 19); -+ var rb = new jslib.RequestBackoff(3, 1, 3, 10, 5, 19, 0); - setNow(1); - rb.noteServerResponse(200); - do_check_true(rb.canMakeRequest()); diff --git a/www/waterfox/files/patch-bug1387170 b/www/waterfox/files/patch-bug1387170 deleted file mode 100644 index fae4b65e028b..000000000000 --- a/www/waterfox/files/patch-bug1387170 +++ /dev/null @@ -1,148 +0,0 @@ -commit 02dc1567cd7d -Author: Brendan Dahl -Date: Thu Aug 3 15:08:16 2017 -0700 - - Bug 1387170 - Use custom clipboard constructor instead of singleton. r=jrmuizel - - This allows instances of the clipboard to be created (like it - was pre-headless). ---- - widget/gtk/nsClipboard.cpp | 31 ------------------------------- - widget/gtk/nsClipboard.h | 2 -- - widget/gtk/nsWidgetFactory.cpp | 26 ++++++++++++++++++++++++-- - 3 files changed, 24 insertions(+), 35 deletions(-) - -diff --git widget/gtk/nsClipboard.cpp widget/gtk/nsClipboard.cpp -index 6972715a72df..d07d5baeede3 100644 ---- widget/gtk/nsClipboard.cpp -+++ widget/gtk/nsClipboard.cpp -@@ -9,7 +9,6 @@ - - #include "nsArrayUtils.h" - #include "nsClipboard.h" --#include "HeadlessClipboard.h" - #include "nsSupportsPrimitives.h" - #include "nsString.h" - #include "nsReadableUtils.h" -@@ -21,7 +20,6 @@ - #include "nsIObserverService.h" - #include "mozilla/Services.h" - #include "mozilla/RefPtr.h" --#include "mozilla/ClearOnShutdown.h" - #include "mozilla/TimeStamp.h" - - #include "imgIContainer.h" -@@ -39,7 +37,6 @@ - - #include "mozilla/Encoding.h" - --#include "gfxPlatform.h" - - using namespace mozilla; - -@@ -81,34 +78,6 @@ selection_request_filter (GdkXEvent *gdk_xevent, - GdkEvent *event, - gpointer data); - --namespace mozilla { --namespace clipboard { --StaticRefPtr sInstance; --} --} --/* static */ already_AddRefed --nsClipboard::GetInstance() --{ -- using namespace mozilla::clipboard; -- -- if (!sInstance) { -- if (gfxPlatform::IsHeadless()) { -- sInstance = new widget::HeadlessClipboard(); -- } else { -- RefPtr clipboard = new nsClipboard(); -- nsresult rv = clipboard->Init(); -- if (NS_FAILED(rv)) { -- return nullptr; -- } -- sInstance = clipboard.forget(); -- } -- ClearOnShutdown(&sInstance); -- } -- -- RefPtr service = sInstance.get(); -- return service.forget(); --} -- - nsClipboard::nsClipboard() - { - } -diff --git widget/gtk/nsClipboard.h widget/gtk/nsClipboard.h -index 725bcdce846a..70c866a013c9 100644 ---- widget/gtk/nsClipboard.h -+++ widget/gtk/nsClipboard.h -@@ -23,8 +23,6 @@ public: - NS_DECL_NSICLIPBOARD - NS_DECL_NSIOBSERVER - -- static already_AddRefed GetInstance(); -- - // Make sure we are initialized, called from the factory - // constructor - nsresult Init (void); -diff --git widget/gtk/nsWidgetFactory.cpp widget/gtk/nsWidgetFactory.cpp -index 3c8bc02ebbb5..86b9cdab77e7 100644 ---- widget/gtk/nsWidgetFactory.cpp -+++ widget/gtk/nsWidgetFactory.cpp -@@ -17,6 +17,7 @@ - #include "nsWindow.h" - #include "nsTransferable.h" - #include "nsHTMLFormatConverter.h" -+#include "HeadlessClipboard.h" - #ifdef MOZ_X11 - #include "nsClipboardHelper.h" - #include "nsClipboard.h" -@@ -72,7 +73,6 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLFormatConverter) - #ifdef MOZ_X11 - NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIdleServiceGTK, nsIdleServiceGTK::GetInstance) - NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboardHelper) --NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIClipboard, nsClipboard::GetInstance) - NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsDragService, nsDragService::GetInstance) - #endif - NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsISound, nsSound::GetInstance) -@@ -194,6 +194,28 @@ nsColorPickerConstructor(nsISupports *aOuter, REFNSIID aIID, - return picker->QueryInterface(aIID, aResult); - } - -+static nsresult -+nsClipboardConstructor(nsISupports *aOuter, REFNSIID aIID, -+ void **aResult) -+{ -+ *aResult = nullptr; -+ if (aOuter != nullptr) { -+ return NS_ERROR_NO_AGGREGATION; -+ } -+ -+ nsCOMPtr inst; -+ if (gfxPlatform::IsHeadless()) { -+ inst = new HeadlessClipboard(); -+ } else { -+ RefPtr clipboard = new nsClipboard(); -+ nsresult rv = clipboard->Init(); -+ NS_ENSURE_SUCCESS(rv, rv); -+ inst = clipboard; -+ } -+ -+ return inst->QueryInterface(aIID, aResult); -+} -+ - NS_DEFINE_NAMED_CID(NS_WINDOW_CID); - NS_DEFINE_NAMED_CID(NS_CHILD_CID); - NS_DEFINE_NAMED_CID(NS_APPSHELL_CID); -@@ -239,7 +261,7 @@ static const mozilla::Module::CIDEntry kWidgetCIDs[] = { - { &kNS_SOUND_CID, false, nullptr, nsISoundConstructor, Module::MAIN_PROCESS_ONLY }, - { &kNS_TRANSFERABLE_CID, false, nullptr, nsTransferableConstructor }, - #ifdef MOZ_X11 -- { &kNS_CLIPBOARD_CID, false, nullptr, nsIClipboardConstructor, Module::MAIN_PROCESS_ONLY }, -+ { &kNS_CLIPBOARD_CID, false, nullptr, nsClipboardConstructor, Module::MAIN_PROCESS_ONLY }, - { &kNS_CLIPBOARDHELPER_CID, false, nullptr, nsClipboardHelperConstructor }, - { &kNS_DRAGSERVICE_CID, false, nullptr, nsDragServiceConstructor, Module::MAIN_PROCESS_ONLY }, - #endif diff --git a/www/waterfox/files/patch-bug1387811 b/www/waterfox/files/patch-bug1387811 deleted file mode 100644 index 9198b313f899..000000000000 --- a/www/waterfox/files/patch-bug1387811 +++ /dev/null @@ -1,42 +0,0 @@ -commit a1341ccf6d63 -Author: Christoph Kerschbaumer -Date: Sun Aug 6 11:37:09 2017 +0200 - - Bug 1387811 - Follow up for Test within Bug 1381761: CSP JSON is never null, hence it's better to check actual contents of JSON for testing. r=dveditz ---- - dom/security/test/csp/file_data_csp_inheritance.html | 6 ++++-- - dom/security/test/csp/test_data_csp_inheritance.html | 4 +++- - 2 files changed, 7 insertions(+), 3 deletions(-) - -diff --git dom/security/test/csp/file_data_csp_inheritance.html dom/security/test/csp/file_data_csp_inheritance.html -index 299c30255aa6..cbb4865343db 100644 ---- dom/security/test/csp/file_data_csp_inheritance.html -+++ dom/security/test/csp/file_data_csp_inheritance.html -@@ -13,8 +13,10 @@ - var frame = document.getElementById("dataFrame"); - var principal = SpecialPowers.wrap(frame.contentDocument).nodePrincipal; - var cspJSON = principal.cspJSON; -- var result = principal.cspJSON ? "dataInheritsCSP" : "dataDoesNotInheritCSP"; -- window.parent.postMessage({result}, "*"); -+ var cspOBJ = JSON.parse(principal.cspJSON); -+ // make sure we got >>one<< policy -+ var policies = cspOBJ["csp-policies"]; -+ window.parent.postMessage({result: policies.length}, "*"); - - - -diff --git dom/security/test/csp/test_data_csp_inheritance.html dom/security/test/csp/test_data_csp_inheritance.html -index 3afc4f7c02bc..bde2f5617e65 100644 ---- dom/security/test/csp/test_data_csp_inheritance.html -+++ dom/security/test/csp/test_data_csp_inheritance.html -@@ -22,7 +22,9 @@ SimpleTest.waitForExplicitFinish(); - window.addEventListener("message", receiveMessage); - function receiveMessage(event) { - window.removeEventListener("message", receiveMessage); -- is(event.data.result, "dataInheritsCSP", -+ // toplevel CSP should apply to data: URI iframe hence resulting -+ // in 1 applied policy. -+ is(event.data.result, 1, - "data: URI iframe inherits CSP from including context"); - SimpleTest.finish(); - } diff --git a/www/waterfox/files/patch-bug1388020 b/www/waterfox/files/patch-bug1388020 deleted file mode 100644 index 5f1b30cd64f6..000000000000 --- a/www/waterfox/files/patch-bug1388020 +++ /dev/null @@ -1,158 +0,0 @@ -commit fde468da7b64 -Author: Andrew Osmond -Date: Tue Apr 10 09:40:02 2018 -0400 - - Bug 1388020. r=nical, a=RyanVM ---- - gfx/gl/GLTextureImage.cpp | 3 +++ - gfx/gl/GLUploadHelpers.cpp | 31 ++++++++++++++++++++++++++++++- - gfx/gl/GLUploadHelpers.h | 2 ++ - gfx/gl/TextureImageEGL.cpp | 4 ++++ - gfx/layers/composite/TextureHost.cpp | 3 +-- - gfx/layers/opengl/TextureHostOGL.cpp | 4 +--- - 6 files changed, 41 insertions(+), 6 deletions(-) - -diff --git gfx/gl/GLTextureImage.cpp gfx/gl/GLTextureImage.cpp -index c91d558af441..65678432dace 100644 ---- gfx/gl/GLTextureImage.cpp -+++ gfx/gl/GLTextureImage.cpp -@@ -149,6 +149,9 @@ BasicTextureImage::DirectUpdate(gfx::DataSourceSurface* aSurf, const nsIntRegion - &uploadSize, - needInit, - aFrom); -+ if (mTextureFormat == SurfaceFormat::UNKNOWN) { -+ return false; -+ } - - if (uploadSize > 0) { - UpdateUploadSize(uploadSize); -diff --git gfx/gl/GLUploadHelpers.cpp gfx/gl/GLUploadHelpers.cpp -index 75165eedf787..ca1c890a486d 100644 ---- gfx/gl/GLUploadHelpers.cpp -+++ gfx/gl/GLUploadHelpers.cpp -@@ -27,6 +27,23 @@ DataOffset(const IntPoint& aPoint, int32_t aStride, SurfaceFormat aFormat) - return data; - } - -+static bool -+CheckUploadBounds(const IntSize& aDst, const IntSize& aSrc, const IntPoint& aOffset) -+{ -+ if (aOffset.x < 0 || aOffset.y < 0 || -+ aOffset.x >= aSrc.width || -+ aOffset.y >= aSrc.height) { -+ MOZ_ASSERT_UNREACHABLE("Offset outside source bounds"); -+ return false; -+ } -+ if (aDst.width > (aSrc.width - aOffset.x) || -+ aDst.height > (aSrc.height - aOffset.y)) { -+ MOZ_ASSERT_UNREACHABLE("Source has insufficient data"); -+ return false; -+ } -+ return true; -+} -+ - static GLint GetAddressAlignment(ptrdiff_t aAddress) - { - if (!(aAddress & 0x7)) { -@@ -375,6 +392,7 @@ TexImage2DHelper(GLContext* gl, - SurfaceFormat - UploadImageDataToTexture(GLContext* gl, - unsigned char* aData, -+ const gfx::IntSize& aDataSize, - int32_t aStride, - SurfaceFormat aFormat, - const nsIntRegion& aDstRegion, -@@ -498,6 +516,10 @@ UploadImageDataToTexture(GLContext* gl, - // Upload each rect in the region to the texture - for (auto iter = aDstRegion.RectIter(); !iter.Done(); iter.Next()) { - const IntRect& rect = iter.Get(); -+ if (!CheckUploadBounds(rect.Size(), aDataSize, rect.TopLeft())) { -+ return SurfaceFormat::UNKNOWN; -+ } -+ - const unsigned char* rectData = - aData + DataOffset(rect.TopLeft(), aStride, aFormat); - -@@ -534,10 +556,17 @@ UploadSurfaceToTexture(GLContext* gl, - - int32_t stride = aSurface->Stride(); - SurfaceFormat format = aSurface->GetFormat(); -+ gfx::IntSize size = aSurface->GetSize(); -+ if (!CheckUploadBounds(aSize, size, aSrcPoint)) { -+ return SurfaceFormat::UNKNOWN; -+ } -+ - unsigned char* data = aSurface->GetData() + - DataOffset(aSrcPoint, stride, format); -+ size.width -= aSrcPoint.x; -+ size.height -= aSrcPoint.y; - -- return UploadImageDataToTexture(gl, data, stride, format, -+ return UploadImageDataToTexture(gl, data, size, stride, format, - aDstRegion, aTexture, aSize, - aOutUploadSize, aNeedInit, - aTextureUnit, aTextureTarget); -diff --git gfx/gl/GLUploadHelpers.h gfx/gl/GLUploadHelpers.h -index 866d44adbed0..f732d2b3834f 100644 ---- gfx/gl/GLUploadHelpers.h -+++ gfx/gl/GLUploadHelpers.h -@@ -28,6 +28,7 @@ class GLContext; - * \param gl The GL Context to use. - * \param aData Start of image data of surface to upload. - * Corresponds to the first pixel of the texture. -+ * \param aDataSize The image data's size. - * \param aStride The image data's stride. - * \param aFormat The image data's format. - * \param aDstRegion Region of the texture to upload. -@@ -46,6 +47,7 @@ class GLContext; - gfx::SurfaceFormat - UploadImageDataToTexture(GLContext* gl, - unsigned char* aData, -+ const gfx::IntSize& aDataSize, - int32_t aStride, - gfx::SurfaceFormat aFormat, - const nsIntRegion& aDstRegion, -diff --git gfx/gl/TextureImageEGL.cpp gfx/gl/TextureImageEGL.cpp -index 87a547c26925..3bb2987d1da5 100644 ---- gfx/gl/TextureImageEGL.cpp -+++ gfx/gl/TextureImageEGL.cpp -@@ -119,6 +119,10 @@ TextureImageEGL::DirectUpdate(gfx::DataSourceSurface* aSurf, const nsIntRegion& - &uploadSize, - needInit, - aFrom); -+ if (mTextureFormat == SurfaceFormat::UNKNOWN) { -+ return false; -+ } -+ - if (uploadSize > 0) { - UpdateUploadSize(uploadSize); - } -diff --git gfx/layers/composite/TextureHost.cpp gfx/layers/composite/TextureHost.cpp -index e7d87e238913..c93037384744 100644 ---- gfx/layers/composite/TextureHost.cpp -+++ gfx/layers/composite/TextureHost.cpp -@@ -888,8 +888,7 @@ BufferTextureHost::Upload(nsIntRegion *aRegion) - mFirstSource = mCompositor->CreateDataTextureSource(mFlags|TextureFlags::RGB_FROM_YCBCR); - mFirstSource->SetOwner(this); - } -- mFirstSource->Update(surf, aRegion); -- return true; -+ return mFirstSource->Update(surf, aRegion); - } - - RefPtr srcY; -diff --git gfx/layers/opengl/TextureHostOGL.cpp gfx/layers/opengl/TextureHostOGL.cpp -index 02c398b51fe7..ec6ba913123f 100644 ---- gfx/layers/opengl/TextureHostOGL.cpp -+++ gfx/layers/opengl/TextureHostOGL.cpp -@@ -161,9 +161,7 @@ TextureImageTextureSourceOGL::Update(gfx::DataSourceSurface* aSurface, - } - } - -- mTexImage->UpdateFromDataSource(aSurface, aDestRegion, aSrcOffset); -- -- return true; -+ return mTexImage->UpdateFromDataSource(aSurface, aDestRegion, aSrcOffset); - } - - void diff --git a/www/waterfox/files/patch-bug1388319 b/www/waterfox/files/patch-bug1388319 deleted file mode 100644 index 8b26989437d1..000000000000 --- a/www/waterfox/files/patch-bug1388319 +++ /dev/null @@ -1,30 +0,0 @@ -commit e572d7e6e7cf -Author: Xidorn Quan -Date: Tue Aug 8 22:41:32 2017 +1000 - - Bug 1388319 - Mark ServoStyleSet dirty in its Init. r=emilio - - MozReview-Commit-ID: 804KasIiS6E - - --HG-- - extra : rebase_source : 36eb21c5ffc4321aef652947455e73970419803a ---- - layout/style/ServoStyleSet.cpp | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git layout/style/ServoStyleSet.cpp layout/style/ServoStyleSet.cpp -index adb3cba922d2..a1cd15903ade 100644 ---- layout/style/ServoStyleSet.cpp -+++ layout/style/ServoStyleSet.cpp -@@ -81,8 +81,9 @@ ServoStyleSet::Init(nsPresContext* aPresContext, nsBindingManager* aBindingManag - } - } - -- // No need to Servo_StyleSet_FlushStyleSheets because we just created the -- // mRawSet, so there was nothing to flush. -+ // We added prefilled stylesheets into mRawSet, so the stylist is dirty. -+ // The Stylist should be updated later when necessary. -+ SetStylistStyleSheetsDirty(); - } - - void diff --git a/www/waterfox/files/patch-bug1388744 b/www/waterfox/files/patch-bug1388744 deleted file mode 100644 index abee54061188..000000000000 --- a/www/waterfox/files/patch-bug1388744 +++ /dev/null @@ -1,14 +0,0 @@ -Unbreak pingsender build on Tier3 archs - ---- toolkit/crashreporter/google-breakpad/src/third_party/curl/curlbuild.h -+++ toolkit/crashreporter/google-breakpad/src/third_party/curl/curlbuild.h -@@ -154,8 +154,7 @@ - #endif - - /* The size of `long', as computed by sizeof. */ --#if defined(_M_X64) || (defined(__x86_64__) && !defined(__ILP32__)) || \ -- defined(__aarch64__) || (defined(__mips__) && _MIPS_SIM == _ABI64) -+#if defined(_M_X64) || defined(__LP64__) - #define CURL_SIZEOF_LONG 8 - #else - #define CURL_SIZEOF_LONG 4 diff --git a/www/waterfox/files/patch-bug1393235 b/www/waterfox/files/patch-bug1393235 deleted file mode 100644 index c7586334a05d..000000000000 --- a/www/waterfox/files/patch-bug1393235 +++ /dev/null @@ -1,88 +0,0 @@ -commit 9398bd6f4378 -Author: Eric Rahm -Date: Tue Aug 22 19:30:46 2017 -0700 - - Bug 1393235 - Fix improper usages of string functions. r=njn - - This fixes usages of `Find`, `RFind` and the equality operator that kind of - work right now but will break with the proper type checking of a templatized - version of the string classes. - - For `Find` and `RFind` it appears that `nsCString::(R)Find("foo", 0)` calls - were being coerced to the `Find(char*, bool, int, int)` versions. The intent was - probably to just start searching from position zero. - - For the equality operator, the type of nullptr is nullptr_t rather than - char(16_t)* so we'd need to add an operator overload that takes nullptr_t. In - this case just using `IsVoid` is probably more appropriate. - - --HG-- - extra : rebase_source : 50f78519084012ca669da0a211c489520c11d6b6 ---- - docshell/base/nsDefaultURIFixup.cpp | 2 +- - dom/media/gmp/ChromiumCDMChild.cpp | 2 +- - toolkit/components/places/nsNavHistory.cpp | 2 +- - toolkit/components/url-classifier/Classifier.cpp | 4 ++-- - 4 files changed, 5 insertions(+), 5 deletions(-) - -diff --git docshell/base/nsDefaultURIFixup.cpp docshell/base/nsDefaultURIFixup.cpp -index 77e008b15a17..a1a893b8efb2 100644 ---- docshell/base/nsDefaultURIFixup.cpp -+++ docshell/base/nsDefaultURIFixup.cpp -@@ -687,7 +687,7 @@ nsDefaultURIFixup::FixupURIProtocol(const nsACString& aURIString, - // no-scheme.com/query?foo=http://www.foo.com - // user:pass@no-scheme.com - // -- int32_t schemeDelim = uriString.Find("://", 0); -+ int32_t schemeDelim = uriString.Find("://"); - int32_t firstDelim = uriString.FindCharInSet("/:"); - if (schemeDelim <= 0 || - (firstDelim != -1 && schemeDelim > firstDelim)) { -diff --git dom/media/gmp/ChromiumCDMChild.cpp dom/media/gmp/ChromiumCDMChild.cpp -index e99f913622ab..8dc288b4c57e 100644 ---- dom/media/gmp/ChromiumCDMChild.cpp -+++ dom/media/gmp/ChromiumCDMChild.cpp -@@ -232,7 +232,7 @@ ChromiumCDMChild::OnResolveNewSessionPromiseInternal(uint32_t aPromiseId, - // a session it calls OnResolveNewSessionPromise with nullptr as the sessionId. - // We can safely assume this means that we have failed to load a session - // as the other methods specify calling 'OnRejectPromise' when they fail. -- bool loadSuccessful = aSessionId != nullptr; -+ bool loadSuccessful = !aSessionId.IsEmpty(); - GMP_LOG("ChromiumCDMChild::OnResolveNewSessionPromise(pid=%u, sid=%s) " - "resolving %s load session ", - aPromiseId, -diff --git toolkit/components/places/nsNavHistory.cpp toolkit/components/places/nsNavHistory.cpp -index 4e52752529fa..0b01d904b2f7 100644 ---- toolkit/components/places/nsNavHistory.cpp -+++ toolkit/components/places/nsNavHistory.cpp -@@ -1939,7 +1939,7 @@ PlacesSQLQueryBuilder::Where() - - // If we used WHERE already, we inject the conditions - // in place of {ADDITIONAL_CONDITIONS} -- if (mQueryString.Find("{ADDITIONAL_CONDITIONS}", 0) != kNotFound) { -+ if (mQueryString.Find("{ADDITIONAL_CONDITIONS}") != kNotFound) { - nsAutoCString innerCondition; - // If we have condition AND it - if (!mConditions.IsEmpty()) { -diff --git toolkit/components/url-classifier/Classifier.cpp toolkit/components/url-classifier/Classifier.cpp -index 500780150a91..68169925d2d0 100644 ---- toolkit/components/url-classifier/Classifier.cpp -+++ toolkit/components/url-classifier/Classifier.cpp -@@ -992,7 +992,7 @@ Classifier::ScanStoreDir(nsIFile* aDirectory, nsTArray& aTables) - // Both v2 and v4 contain .pset file - nsCString suffix(NS_LITERAL_CSTRING(".pset")); - -- int32_t dot = leafName.RFind(suffix, 0); -+ int32_t dot = leafName.RFind(suffix); - if (dot != -1) { - leafName.Cut(dot, suffix.Length()); - aTables.AppendElement(leafName); -@@ -1582,7 +1582,7 @@ Classifier::LoadMetadata(nsIFile* aDirectory, nsACString& aResult) - rv = file->GetNativeLeafName(tableName); - NS_ENSURE_SUCCESS(rv, rv); - -- int32_t dot = tableName.RFind(METADATA_SUFFIX, 0); -+ int32_t dot = tableName.RFind(METADATA_SUFFIX); - if (dot == -1) { - continue; - } diff --git a/www/waterfox/files/patch-bug1393283 b/www/waterfox/files/patch-bug1393283 deleted file mode 100644 index b9c763fe47ec..000000000000 --- a/www/waterfox/files/patch-bug1393283 +++ /dev/null @@ -1,144 +0,0 @@ -commit d20c7d929c84 -Author: Ethan -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 = (10 - spoofedVersion % 10) + spoofedVersion; -- 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 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 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/waterfox/files/patch-bug1393627 b/www/waterfox/files/patch-bug1393627 deleted file mode 100644 index 759cbffe52bc..000000000000 --- a/www/waterfox/files/patch-bug1393627 +++ /dev/null @@ -1,30 +0,0 @@ -commit 7f3f4f7f6ad3 -Author: Francois Marier -Date: Fri Nov 3 11:44:43 2017 -0700 - - Bug 1393627 - Expose the full tracking protection UI preferences. r=mossop, a=ritu - - MozReview-Commit-ID: KyDBuHyDPLP - - --HG-- - extra : source : 516690579442aecc1bea191e905f019acfad5b48 ---- - browser/app/profile/firefox.js | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git browser/app/profile/firefox.js browser/app/profile/firefox.js -index 137462dc857e..9e08a0f166f9 100644 ---- browser/app/profile/firefox.js -+++ browser/app/profile/firefox.js -@@ -1511,11 +1511,7 @@ pref("browser.ping-centre.production.endpoint", "https://tiles.services.mozilla. - // Enable GMP support in the addon manager. - pref("media.gmp-provider.enabled", true); - --#ifdef NIGHTLY_BUILD - pref("privacy.trackingprotection.ui.enabled", true); --#else --pref("privacy.trackingprotection.ui.enabled", false); --#endif - pref("privacy.trackingprotection.introCount", 0); - pref("privacy.trackingprotection.introURL", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/tracking-protection/start/"); - diff --git a/www/waterfox/files/patch-bug1394146 b/www/waterfox/files/patch-bug1394146 deleted file mode 100644 index d3cba27a5a88..000000000000 --- a/www/waterfox/files/patch-bug1394146 +++ /dev/null @@ -1,119 +0,0 @@ -commit f8221b58e542 -Author: Sean Stangl -Date: Thu Sep 21 15:37:00 2017 -0400 - - Bug 1394146 - Avoid overflow on backwards iteration of IC entries. r=jandem, a=sledru - - --HG-- - extra : source : 9f05ef54c84d9b63fb3ad2dd2916df34cb35df8d - extra : histedit_source : 753ccc8652983bb35d3a1f9f89638902d3b0a2a5 ---- - js/src/jit/BaselineJIT.cpp | 11 +++++++++-- - js/src/jit/IonControlFlow.cpp | 16 ++++++++++++---- - 2 files changed, 21 insertions(+), 6 deletions(-) - -diff --git js/src/jit/BaselineJIT.cpp js/src/jit/BaselineJIT.cpp -index 3e25fd7b7120..baec7b63b8f0 100644 ---- js/src/jit/BaselineJIT.cpp -+++ js/src/jit/BaselineJIT.cpp -@@ -669,12 +669,16 @@ BaselineScript::maybeICEntryFromPCOffset(uint32_t pcOffset) - if (!ComputeBinarySearchMid(this, pcOffset, &mid)) - return nullptr; - -+ MOZ_ASSERT(mid < numICEntries()); -+ - // Found an IC entry with a matching PC offset. Search backward, and then - // forward from this IC entry, looking for one with the same PC offset which - // has isForOp() set. -- for (size_t i = mid; i < numICEntries() && icEntry(i).pcOffset() == pcOffset; i--) { -+ for (size_t i = mid; icEntry(i).pcOffset() == pcOffset; i--) { - if (icEntry(i).isForOp()) - return &icEntry(i); -+ if (i == 0) -+ break; - } - for (size_t i = mid+1; i < numICEntries() && icEntry(i).pcOffset() == pcOffset; i++) { - if (icEntry(i).isForOp()) -@@ -728,10 +732,13 @@ BaselineScript::callVMEntryFromPCOffset(uint32_t pcOffset) - // inserted by VM calls. - size_t mid; - MOZ_ALWAYS_TRUE(ComputeBinarySearchMid(this, pcOffset, &mid)); -+ MOZ_ASSERT(mid < numICEntries()); - -- for (size_t i = mid; i < numICEntries() && icEntry(i).pcOffset() == pcOffset; i--) { -+ for (size_t i = mid; icEntry(i).pcOffset() == pcOffset; i--) { - if (icEntry(i).kind() == ICEntry::Kind_CallVM) - return icEntry(i); -+ if (i == 0) -+ break; - } - for (size_t i = mid+1; i < numICEntries() && icEntry(i).pcOffset() == pcOffset; i++) { - if (icEntry(i).kind() == ICEntry::Kind_CallVM) -diff --git js/src/jit/IonControlFlow.cpp js/src/jit/IonControlFlow.cpp -index 4f27cd53dcaa..8d8a796d3f3b 100644 ---- js/src/jit/IonControlFlow.cpp -+++ js/src/jit/IonControlFlow.cpp -@@ -1619,7 +1619,7 @@ ControlFlowGenerator::processBreak(JSOp op, jssrcnote* sn) - DebugOnly found = false; - - if (SN_TYPE(sn) == SRC_BREAK2LABEL) { -- for (size_t i = labels_.length() - 1; i < labels_.length(); i--) { -+ for (size_t i = labels_.length() - 1; ; i--) { - CFGState& cfg = cfgStack_[labels_[i].cfgEntry]; - MOZ_ASSERT(cfg.state == CFGState::LABEL); - if (cfg.stopAt == target) { -@@ -1627,9 +1627,11 @@ ControlFlowGenerator::processBreak(JSOp op, jssrcnote* sn) - found = true; - break; - } -+ if (i == 0) -+ break; - } - } else { -- for (size_t i = loops_.length() - 1; i < loops_.length(); i--) { -+ for (size_t i = loops_.length() - 1; ; i--) { - CFGState& cfg = cfgStack_[loops_[i].cfgEntry]; - MOZ_ASSERT(cfg.isLoop()); - if (cfg.loop.exitpc == target) { -@@ -1637,6 +1639,8 @@ ControlFlowGenerator::processBreak(JSOp op, jssrcnote* sn) - found = true; - break; - } -+ if (i == 0) -+ break; - } - } - -@@ -1665,7 +1669,7 @@ ControlFlowGenerator::processContinue(JSOp op) - // Find the target loop. - CFGState* found = nullptr; - jsbytecode* target = pc + GetJumpOffset(pc); -- for (size_t i = loops_.length() - 1; i < loops_.length(); i--) { -+ for (size_t i = loops_.length() - 1; ; i--) { - // +1 to skip JSOP_JUMPTARGET. - if (loops_[i].continuepc == target + 1 || - EffectiveContinue(loops_[i].continuepc) == target) -@@ -1673,6 +1677,8 @@ ControlFlowGenerator::processContinue(JSOp op) - found = &cfgStack_[loops_[i].cfgEntry]; - break; - } -+ if (i == 0) -+ break; - } - - // There must always be a valid target loop structure. If not, there's -@@ -1698,11 +1704,13 @@ ControlFlowGenerator::processSwitchBreak(JSOp op) - // Find the target switch. - CFGState* found = nullptr; - jsbytecode* target = pc + GetJumpOffset(pc); -- for (size_t i = switches_.length() - 1; i < switches_.length(); i--) { -+ for (size_t i = switches_.length() - 1; ; i--) { - if (switches_[i].continuepc == target) { - found = &cfgStack_[switches_[i].cfgEntry]; - break; - } -+ if (i == 0) -+ break; - } - - // There must always be a valid target loop structure. If not, there's diff --git a/www/waterfox/files/patch-bug1394601 b/www/waterfox/files/patch-bug1394601 deleted file mode 100644 index 582385d1f60c..000000000000 --- a/www/waterfox/files/patch-bug1394601 +++ /dev/null @@ -1,26 +0,0 @@ -commit 99cb2b5a1879 -Author: Francois Marier -Date: Mon Aug 28 17:06:00 2017 -0700 - - Bug 1394601 - Log an error when the Google API key is missing during Safe Browsing initialization. r=gcp - - MozReview-Commit-ID: DNwa9lR0J6K - - --HG-- - extra : rebase_source : 0a547c0cf88e1ed09268cbb810abaaca09e98531 ---- - toolkit/components/url-classifier/SafeBrowsing.jsm | 1 + - 1 file changed, 1 insertion(+) - -diff --git toolkit/components/url-classifier/SafeBrowsing.jsm toolkit/components/url-classifier/SafeBrowsing.jsm -index 051432393539..32cab18c187f 100644 ---- toolkit/components/url-classifier/SafeBrowsing.jsm -+++ toolkit/components/url-classifier/SafeBrowsing.jsm -@@ -343,6 +343,7 @@ this.SafeBrowsing = { - let googleKey = Services.urlFormatter.formatURL("%GOOGLE_API_KEY%").trim(); - if ((provider == "google" || provider == "google4") && - (!googleKey || googleKey == "no-google-api-key")) { -+ log("Missing Google API key, clearing updateURL and gethashURL."); - updateURL= ""; - gethashURL= ""; - } diff --git a/www/waterfox/files/patch-bug1395246 b/www/waterfox/files/patch-bug1395246 deleted file mode 100644 index ba7e6fecbcda..000000000000 --- a/www/waterfox/files/patch-bug1395246 +++ /dev/null @@ -1,83 +0,0 @@ -commit be7a92ebe633 -Author: Randell Jesup -Date: Thu Jun 7 15:26:25 2018 -0400 - - Bug 1395246 - Nullcheck DataChannel SendPacket calls, add some diagnostics. r=drno, a=RyanVM - - --HG-- - extra : source : 4d7a8d001f087fc500be3b4ca2469310fa39e6be ---- - netwerk/sctp/datachannel/DataChannel.cpp | 12 +++++++++++- - netwerk/sctp/datachannel/DataChannel.h | 8 ++++++-- - 2 files changed, 17 insertions(+), 3 deletions(-) - -diff --git netwerk/sctp/datachannel/DataChannel.cpp netwerk/sctp/datachannel/DataChannel.cpp -index b07cfaa4c273d..d7a9b64f155b7 100644 ---- netwerk/sctp/datachannel/DataChannel.cpp -+++ netwerk/sctp/datachannel/DataChannel.cpp -@@ -220,6 +220,9 @@ DataChannelConnection::DataChannelConnection(DataConnectionListener *listener, - mRemotePort = 0; - LOG(("Constructor DataChannelConnection=%p, listener=%p", this, mListener.get())); - mInternalIOThread = nullptr; -+#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED -+ mShutdown = false; -+#endif - } - - DataChannelConnection::~DataChannelConnection() -@@ -307,6 +310,10 @@ void DataChannelConnection::DestroyOnSTS(struct socket *aMasterSocket, - if (aMasterSocket) - usrsctp_close(aMasterSocket); - -+#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED -+ mShutdown = true; -+#endif -+ - disconnect_all(); - } - -@@ -657,7 +664,10 @@ int - DataChannelConnection::SendPacket(unsigned char data[], size_t len, bool release) - { - //LOG(("%p: SCTP/DTLS sent %ld bytes", this, len)); -- int res = mTransportFlow->SendPacket(data, len) < 0 ? 1 : 0; -+ int res = 0; -+ if (mTransportFlow) { -+ res = mTransportFlow->SendPacket(data, len) < 0 ? 1 : 0; -+ } - if (release) - delete [] data; - return res; -@@ -670,6 +680,7 @@ DataChannelConnection::SctpDtlsOutput(void *addr, void *buffer, size_t length, - { - DataChannelConnection *peer = static_cast(addr); - int res; -+ MOZ_DIAGNOSTIC_ASSERT(!peer->mShutdown); - - if (MOZ_LOG_TEST(gSCTPLog, LogLevel::Debug)) { - char *buf; -diff --git netwerk/sctp/datachannel/DataChannel.h netwerk/sctp/datachannel/DataChannel.h -index 8141ed64e3176..eaf2055aacaa0 100644 ---- netwerk/sctp/datachannel/DataChannel.h -+++ netwerk/sctp/datachannel/DataChannel.h -@@ -113,8 +113,8 @@ public: - virtual void NotifyDataChannel(already_AddRefed channel) = 0; - }; - -- explicit DataChannelConnection(DataConnectionListener *listener, -- nsIEventTarget *aTarget); -+ DataChannelConnection(DataConnectionListener *listener, -+ nsIEventTarget *aTarget); - - bool Init(unsigned short aPort, uint16_t aNumStreams, bool aUsingDtls); - void Destroy(); // So we can spawn refs tied to runnables in shutdown -@@ -285,6 +285,9 @@ private: - bool mUsingDtls; - - nsCOMPtr mInternalIOThread; -+#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED -+ bool mShutdown; -+#endif - }; - - #define ENSURE_DATACONNECTION \ diff --git a/www/waterfox/files/patch-bug1395486 b/www/waterfox/files/patch-bug1395486 deleted file mode 100644 index 06309b87a661..000000000000 --- a/www/waterfox/files/patch-bug1395486 +++ /dev/null @@ -1,53 +0,0 @@ -commit c978a96e849c -Author: Chung-Sheng Fu -Date: Thu Aug 31 17:06:22 2017 +0800 - - Bug 1395486 - Move resource://gre-resource/plaintext.css to resource://content-accessible/plaintext.css. r=heycam - - MozReview-Commit-ID: Efz2Z78W2ix - - --HG-- - extra : rebase_source : 0522f382acd14372c6fea0a695f1d09300810912 ---- - layout/style/jar.mn | 1 - - layout/style/moz.build | 1 + - parser/html/nsHtml5PlainTextUtils.cpp | 2 +- - 3 files changed, 2 insertions(+), 2 deletions(-) - -diff --git layout/style/jar.mn layout/style/jar.mn -index 81af0f7540fc..4a4418218290 100644 ---- layout/style/jar.mn -+++ layout/style/jar.mn -@@ -6,7 +6,6 @@ toolkit.jar: - * res/ua.css (res/ua.css) - * res/html.css (res/html.css) - res/quirk.css (res/quirk.css) -- res/plaintext.css (res/plaintext.css) - res/counterstyles.css (res/counterstyles.css) - res/noscript.css (res/noscript.css) - res/noframes.css (res/noframes.css) -diff --git layout/style/moz.build layout/style/moz.build -index d4fbd0fef384..b5b19ee62232 100644 ---- layout/style/moz.build -+++ layout/style/moz.build -@@ -304,6 +304,7 @@ RESOURCE_FILES += [ - - CONTENT_ACCESSIBLE_FILES += [ - 'ImageDocument.css', -+ 'res/plaintext.css', - 'res/viewsource.css', - 'TopLevelImageDocument.css', - 'TopLevelVideoDocument.css', -diff --git parser/html/nsHtml5PlainTextUtils.cpp parser/html/nsHtml5PlainTextUtils.cpp -index e68522987784..920c5eee89d1 100644 ---- parser/html/nsHtml5PlainTextUtils.cpp -+++ parser/html/nsHtml5PlainTextUtils.cpp -@@ -22,7 +22,7 @@ nsHtml5PlainTextUtils::NewLinkAttributes() - nsHtml5String type = nsHtml5Portability::newStringFromLiteral("text/css"); - linkAttrs->addAttribute(nsHtml5AttributeName::ATTR_TYPE, type, -1); - nsHtml5String href = nsHtml5Portability::newStringFromLiteral( -- "resource://gre-resources/plaintext.css"); -+ "resource://content-accessible/plaintext.css"); - linkAttrs->addAttribute(nsHtml5AttributeName::ATTR_HREF, href, -1); - - nsresult rv; diff --git a/www/waterfox/files/patch-bug1396722 b/www/waterfox/files/patch-bug1396722 deleted file mode 100644 index 55e085860e96..000000000000 --- a/www/waterfox/files/patch-bug1396722 +++ /dev/null @@ -1,1426 +0,0 @@ -commit 00beb3311073 -Author: Karl Tomlinson -Date: Tue Sep 5 09:16:01 2017 +1200 - - bug 1396722 remove no-op ReleaseStyleContext() r=stransky+263117 - - MozReview-Commit-ID: DgKM0wrStrk - - --HG-- - extra : rebase_source : a26fdc5e5d6c63e21bb98a19ee7bf58042f9b3ba ---- - widget/gtk/WidgetStyleCache.cpp | 9 +- - widget/gtk/WidgetStyleCache.h | 15 +- - widget/gtk/gtk3drawing.cpp | 306 +++++++++++++++------------------------- - widget/gtk/nsLookAndFeel.cpp | 63 +++------ - 4 files changed, 142 insertions(+), 251 deletions(-) - -diff --git widget/gtk/WidgetStyleCache.cpp widget/gtk/WidgetStyleCache.cpp -index bf0c2d080c17..39b7893df3bd 100644 ---- widget/gtk/WidgetStyleCache.cpp -+++ widget/gtk/WidgetStyleCache.cpp -@@ -1220,8 +1220,8 @@ ResetWidgetCache(void) - } - - GtkStyleContext* --ClaimStyleContext(WidgetNodeType aNodeType, GtkTextDirection aDirection, -- GtkStateFlags aStateFlags, StyleFlags aFlags) -+GetStyleContext(WidgetNodeType aNodeType, GtkTextDirection aDirection, -+ GtkStateFlags aStateFlags, StyleFlags aFlags) - { - GtkStyleContext* style; - if (gtk_check_version(3, 20, 0) != nullptr) { -@@ -1276,8 +1276,3 @@ ClaimStyleContext(WidgetNodeType aNodeType, GtkTextDirection aDirection, - } - return style; - } -- --void --ReleaseStyleContext(GtkStyleContext* aStyleContext) --{ --} -diff --git widget/gtk/WidgetStyleCache.h widget/gtk/WidgetStyleCache.h -index 2cbb5f96076f..6cce492de2b6 100644 ---- widget/gtk/WidgetStyleCache.h -+++ widget/gtk/WidgetStyleCache.h -@@ -33,14 +33,15 @@ CreateCSSNode(const char* aName, - GtkStyleContext* aParentStyle, - GType aType = G_TYPE_NONE); - --// Callers must call ReleaseStyleContext() on the returned context. -+/* -+ * Returns a pointer to a style context for the specified node and state. -+ * The context is owned by WidgetStyleCache. Do not unref. -+ */ - GtkStyleContext* --ClaimStyleContext(WidgetNodeType aNodeType, -- GtkTextDirection aDirection = GTK_TEXT_DIR_NONE, -- GtkStateFlags aStateFlags = GTK_STATE_FLAG_NORMAL, -- StyleFlags aFlags = NO_STYLE_FLAGS); --void --ReleaseStyleContext(GtkStyleContext* style); -+GetStyleContext(WidgetNodeType aNodeType, -+ GtkTextDirection aDirection = GTK_TEXT_DIR_NONE, -+ GtkStateFlags aStateFlags = GTK_STATE_FLAG_NORMAL, -+ StyleFlags aFlags = NO_STYLE_FLAGS); - - void - ResetWidgetCache(void); -diff --git widget/gtk/gtk3drawing.cpp widget/gtk/gtk3drawing.cpp -index 73bd1987fd39..4c562b380095 100644 ---- widget/gtk/gtk3drawing.cpp -+++ widget/gtk/gtk3drawing.cpp -@@ -100,10 +100,9 @@ moz_gtk_refresh() - gtk_check_version(3, 20, 0) != nullptr) - { - // Deprecated for Gtk >= 3.20+ -- GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_TAB_TOP); -+ GtkStyleContext *style = GetStyleContext(MOZ_GTK_TAB_TOP); - gtk_style_context_get_style(style, - "has-tab-gap", ¬ebook_has_tab_gap, NULL); -- ReleaseStyleContext(style); - } - else { - notebook_has_tab_gap = true; -@@ -149,31 +148,28 @@ moz_gtk_get_focus_outline_size(GtkStyleContext* style, - gint - moz_gtk_get_focus_outline_size(gint* focus_h_width, gint* focus_v_width) - { -- GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_ENTRY); -+ GtkStyleContext *style = GetStyleContext(MOZ_GTK_ENTRY); - moz_gtk_get_focus_outline_size(style, focus_h_width, focus_v_width); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - - gint - moz_gtk_menuitem_get_horizontal_padding(gint* horizontal_padding) - { -- GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_MENUITEM); -+ GtkStyleContext *style = GetStyleContext(MOZ_GTK_MENUITEM); - gtk_style_context_get_style(style, - "horizontal-padding", horizontal_padding, - nullptr); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - - gint - moz_gtk_checkmenuitem_get_horizontal_padding(gint* horizontal_padding) - { -- GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_CHECKMENUITEM); -+ GtkStyleContext *style = GetStyleContext(MOZ_GTK_CHECKMENUITEM); - gtk_style_context_get_style(style, - "horizontal-padding", horizontal_padding, - nullptr); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -183,11 +179,10 @@ moz_gtk_button_get_default_overflow(gint* border_top, gint* border_left, - { - GtkBorder* default_outside_border; - -- GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_BUTTON); -+ GtkStyleContext *style = GetStyleContext(MOZ_GTK_BUTTON); - gtk_style_context_get_style(style, - "default-outside-border", &default_outside_border, - NULL); -- ReleaseStyleContext(style); - - if (default_outside_border) { - *border_top = default_outside_border->top; -@@ -207,11 +202,10 @@ moz_gtk_button_get_default_border(gint* border_top, gint* border_left, - { - GtkBorder* default_border; - -- GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_BUTTON); -+ GtkStyleContext *style = GetStyleContext(MOZ_GTK_BUTTON); - gtk_style_context_get_style(style, - "default-border", &default_border, - NULL); -- ReleaseStyleContext(style); - - if (default_border) { - *border_top = default_border->top; -@@ -231,12 +225,11 @@ moz_gtk_splitter_get_metrics(gint orientation, gint* size) - { - GtkStyleContext *style; - if (orientation == GTK_ORIENTATION_HORIZONTAL) { -- style = ClaimStyleContext(MOZ_GTK_SPLITTER_HORIZONTAL); -+ style = GetStyleContext(MOZ_GTK_SPLITTER_HORIZONTAL); - } else { -- style = ClaimStyleContext(MOZ_GTK_SPLITTER_VERTICAL); -+ style = GetStyleContext(MOZ_GTK_SPLITTER_VERTICAL); - } - gtk_style_context_get_style(style, "handle_size", size, NULL); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -244,15 +237,13 @@ static gint - moz_gtk_window_paint(cairo_t *cr, GdkRectangle* rect, - GtkTextDirection direction) - { -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_WINDOW, direction); -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_WINDOW, direction); - - gtk_style_context_save(style); - gtk_style_context_add_class(style, GTK_STYLE_CLASS_BACKGROUND); - gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height); - gtk_style_context_restore(style); - -- ReleaseStyleContext(style); -- - return MOZ_GTK_SUCCESS; - } - -@@ -351,9 +342,8 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRectangle* rect, - if (inconsistent) - state_flags = static_cast(state_flags|GTK_STATE_FLAG_INCONSISTENT); - -- style = ClaimStyleContext(isradio ? MOZ_GTK_RADIOBUTTON : -- MOZ_GTK_CHECKBUTTON, -- direction, state_flags); -+ style = GetStyleContext(isradio ? MOZ_GTK_RADIOBUTTON : MOZ_GTK_CHECKBUTTON, -+ direction, state_flags); - - if (gtk_check_version(3, 20, 0) == nullptr) { - gtk_render_background(style, cr, x, y, width, height); -@@ -375,8 +365,6 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRectangle* rect, - } - } - -- ReleaseStyleContext(style); -- - return MOZ_GTK_SUCCESS; - } - -@@ -460,7 +448,7 @@ static void - moz_gtk_get_widget_min_size(WidgetNodeType aGtkWidgetType, int* width, - int* height) - { -- GtkStyleContext* style = ClaimStyleContext(aGtkWidgetType); -+ GtkStyleContext* style = GetStyleContext(aGtkWidgetType); - GtkStateFlags state_flags = gtk_style_context_get_state(style); - gtk_style_context_get(style, state_flags, - "min-height", height, -@@ -471,7 +459,6 @@ moz_gtk_get_widget_min_size(WidgetNodeType aGtkWidgetType, int* width, - gtk_style_context_get_border(style, state_flags, &border); - gtk_style_context_get_padding(style, state_flags, &padding); - gtk_style_context_get_margin(style, state_flags, &margin); -- ReleaseStyleContext(style); - - *width += border.left + border.right + margin.left + margin.right + - padding.left + padding.right; -@@ -666,7 +653,7 @@ moz_gtk_scrollbar_trough_paint(WidgetNodeType widget, - MOZ_GTK_SCROLLBAR_THUMB_VERTICAL : - MOZ_GTK_SCROLLBAR_THUMB_HORIZONTAL; - MozGtkSize thumbSize = GetMinMarginBox(thumb); -- style = ClaimStyleContext(widget, direction); -+ style = GetStyleContext(widget, direction); - MozGtkSize trackSize = GetMinContentBox(style); - trackSize.Include(thumbSize); - trackSize += GetMarginBorderPadding(style); -@@ -681,11 +668,10 @@ moz_gtk_scrollbar_trough_paint(WidgetNodeType widget, - rect.height = trackSize.height; - } - } else { -- style = ClaimStyleContext(widget, direction); -+ style = GetStyleContext(widget, direction); - } - - moz_gtk_draw_styled_frame(style, cr, &rect, state->focused); -- ReleaseStyleContext(style); - - return MOZ_GTK_SUCCESS; - } -@@ -696,18 +682,16 @@ moz_gtk_scrollbar_paint(WidgetNodeType widget, - GtkWidgetState* state, - GtkTextDirection direction) - { -- GtkStyleContext* style = ClaimStyleContext(widget, direction); -+ GtkStyleContext* style = GetStyleContext(widget, direction); - moz_gtk_update_scrollbar_style(style, widget, direction); - - moz_gtk_draw_styled_frame(style, cr, rect, state->focused); - -- ReleaseStyleContext(style); -- style = ClaimStyleContext((widget == MOZ_GTK_SCROLLBAR_HORIZONTAL) ? -- MOZ_GTK_SCROLLBAR_CONTENTS_HORIZONTAL : -- MOZ_GTK_SCROLLBAR_CONTENTS_VERTICAL, -- direction); -+ style = GetStyleContext((widget == MOZ_GTK_SCROLLBAR_HORIZONTAL) ? -+ MOZ_GTK_SCROLLBAR_CONTENTS_HORIZONTAL : -+ MOZ_GTK_SCROLLBAR_CONTENTS_VERTICAL, -+ direction); - moz_gtk_draw_styled_frame(style, cr, rect, state->focused); -- ReleaseStyleContext(style); - - return MOZ_GTK_SUCCESS; - } -@@ -721,7 +705,7 @@ moz_gtk_scrollbar_thumb_paint(WidgetNodeType widget, - GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state); - - GdkRectangle rect = *aRect; -- GtkStyleContext* style = ClaimStyleContext(widget, direction, state_flags); -+ GtkStyleContext* style = GetStyleContext(widget, direction, state_flags); - InsetByMargin(&rect, style); - - gtk_render_slider(style, cr, -@@ -732,7 +716,6 @@ moz_gtk_scrollbar_thumb_paint(WidgetNodeType widget, - (widget == MOZ_GTK_SCROLLBAR_THUMB_HORIZONTAL) ? - GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL); - -- ReleaseStyleContext(style); - - return MOZ_GTK_SUCCESS; - } -@@ -741,10 +724,9 @@ static gint - moz_gtk_spin_paint(cairo_t *cr, GdkRectangle* rect, - GtkTextDirection direction) - { -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_SPINBUTTON, direction); -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_SPINBUTTON, direction); - gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height); - gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -753,7 +735,7 @@ moz_gtk_spin_updown_paint(cairo_t *cr, GdkRectangle* rect, - gboolean isDown, GtkWidgetState* state, - GtkTextDirection direction) - { -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_SPINBUTTON, direction, -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_SPINBUTTON, direction, - GetStateFlagsFromGtkWidgetState(state)); - - gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height); -@@ -772,7 +754,6 @@ moz_gtk_spin_updown_paint(cairo_t *cr, GdkRectangle* rect, - arrow_rect.x, arrow_rect.y, - arrow_rect.width); - -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -793,7 +774,7 @@ moz_gtk_scale_paint(cairo_t *cr, GdkRectangle* rect, - WidgetNodeType widget = (flags == GTK_ORIENTATION_HORIZONTAL) ? - MOZ_GTK_SCALE_TROUGH_HORIZONTAL : - MOZ_GTK_SCALE_TROUGH_VERTICAL; -- style = ClaimStyleContext(widget, direction, state_flags); -+ style = GetStyleContext(widget, direction, state_flags); - gtk_style_context_get_margin(style, state_flags, &margin); - - // Clamp the dimension perpendicular to the direction that the slider crosses -@@ -817,7 +798,6 @@ moz_gtk_scale_paint(cairo_t *cr, GdkRectangle* rect, - gtk_render_focus(style, cr, - rect->x, rect->y, rect->width, rect->height); - -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -846,9 +826,8 @@ moz_gtk_scale_thumb_paint(cairo_t *cr, GdkRectangle* rect, - WidgetNodeType widget = (flags == GTK_ORIENTATION_HORIZONTAL) ? - MOZ_GTK_SCALE_THUMB_HORIZONTAL : - MOZ_GTK_SCALE_THUMB_VERTICAL; -- style = ClaimStyleContext(widget, direction, state_flags); -+ style = GetStyleContext(widget, direction, state_flags); - gtk_render_slider(style, cr, x, y, thumb_width, thumb_height, flags); -- ReleaseStyleContext(style); - - return MOZ_GTK_SUCCESS; - } -@@ -859,11 +838,10 @@ moz_gtk_gripper_paint(cairo_t *cr, GdkRectangle* rect, - GtkTextDirection direction) - { - GtkStyleContext* style = -- ClaimStyleContext(MOZ_GTK_GRIPPER, direction, -- GetStateFlagsFromGtkWidgetState(state)); -+ GetStyleContext(MOZ_GTK_GRIPPER, direction, -+ GetStateFlagsFromGtkWidgetState(state)); - gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height); - gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -872,12 +850,11 @@ moz_gtk_hpaned_paint(cairo_t *cr, GdkRectangle* rect, - GtkWidgetState* state) - { - GtkStyleContext* style = -- ClaimStyleContext(MOZ_GTK_SPLITTER_SEPARATOR_HORIZONTAL, -- GTK_TEXT_DIR_LTR, -- GetStateFlagsFromGtkWidgetState(state)); -+ GetStyleContext(MOZ_GTK_SPLITTER_SEPARATOR_HORIZONTAL, -+ GTK_TEXT_DIR_LTR, -+ GetStateFlagsFromGtkWidgetState(state)); - gtk_render_handle(style, cr, - rect->x, rect->y, rect->width, rect->height); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -886,12 +863,11 @@ moz_gtk_vpaned_paint(cairo_t *cr, GdkRectangle* rect, - GtkWidgetState* state) - { - GtkStyleContext* style = -- ClaimStyleContext(MOZ_GTK_SPLITTER_SEPARATOR_VERTICAL, -- GTK_TEXT_DIR_LTR, -- GetStateFlagsFromGtkWidgetState(state)); -+ GetStyleContext(MOZ_GTK_SPLITTER_SEPARATOR_VERTICAL, -+ GTK_TEXT_DIR_LTR, -+ GetStateFlagsFromGtkWidgetState(state)); - gtk_render_handle(style, cr, - rect->x, rect->y, rect->width, rect->height); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -939,26 +915,22 @@ moz_gtk_text_view_paint(cairo_t *cr, GdkRectangle* aRect, - GTK_STATE_FLAG_NORMAL; - - GtkStyleContext* style_frame = -- ClaimStyleContext(MOZ_GTK_SCROLLED_WINDOW, direction, state_flags); -+ GetStyleContext(MOZ_GTK_SCROLLED_WINDOW, direction, state_flags); - gtk_render_frame(style_frame, cr, - aRect->x, aRect->y, aRect->width, aRect->height); - - GdkRectangle rect = *aRect; - InsetByBorderPadding(&rect, style_frame); - -- ReleaseStyleContext(style_frame); -- - GtkStyleContext* style = -- ClaimStyleContext(MOZ_GTK_TEXT_VIEW, direction, state_flags); -+ GetStyleContext(MOZ_GTK_TEXT_VIEW, direction, state_flags); - gtk_render_background(style, cr, rect.x, rect.y, rect.width, rect.height); -- ReleaseStyleContext(style); - // There is a separate "text" window, which usually provides the - // background behind the text. However, this is transparent in Ambiance - // for GTK 3.20, in which case the MOZ_GTK_TEXT_VIEW background is - // visible. -- style = ClaimStyleContext(MOZ_GTK_TEXT_VIEW_TEXT, direction, state_flags); -+ style = GetStyleContext(MOZ_GTK_TEXT_VIEW_TEXT, direction, state_flags); - gtk_render_background(style, cr, rect.x, rect.y, rect.width, rect.height); -- ReleaseStyleContext(style); - - return MOZ_GTK_SUCCESS; - } -@@ -978,23 +950,20 @@ moz_gtk_treeview_paint(cairo_t *cr, GdkRectangle* rect, - * area will be painted differently with other states */ - state_flags = state->disabled ? GTK_STATE_FLAG_INSENSITIVE : GTK_STATE_FLAG_NORMAL; - -- style = ClaimStyleContext(MOZ_GTK_SCROLLED_WINDOW, direction); -+ style = GetStyleContext(MOZ_GTK_SCROLLED_WINDOW, direction); - gtk_style_context_get_border(style, state_flags, &border); - xthickness = border.left; - ythickness = border.top; -- ReleaseStyleContext(style); - -- style_tree = ClaimStyleContext(MOZ_GTK_TREEVIEW_VIEW, direction); -+ style_tree = GetStyleContext(MOZ_GTK_TREEVIEW_VIEW, direction); - gtk_render_background(style_tree, cr, - rect->x + xthickness, rect->y + ythickness, - rect->width - 2 * xthickness, - rect->height - 2 * ythickness); -- ReleaseStyleContext(style_tree); - -- style = ClaimStyleContext(MOZ_GTK_SCROLLED_WINDOW, direction); -+ style = GetStyleContext(MOZ_GTK_SCROLLED_WINDOW, direction); - gtk_render_frame(style, cr, - rect->x, rect->y, rect->width, rect->height); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -1022,8 +991,8 @@ moz_gtk_tree_header_sort_arrow_paint(cairo_t *cr, GdkRectangle* rect, - arrow_rect.height = 11; - arrow_rect.x = rect->x + (rect->width - arrow_rect.width) / 2; - arrow_rect.y = rect->y + (rect->height - arrow_rect.height) / 2; -- style = ClaimStyleContext(MOZ_GTK_TREE_HEADER_SORTARROW, direction, -- GetStateFlagsFromGtkWidgetState(state)); -+ style = GetStyleContext(MOZ_GTK_TREE_HEADER_SORTARROW, direction, -+ GetStateFlagsFromGtkWidgetState(state)); - switch (arrow_type) { - case GTK_ARROW_LEFT: - arrow_angle = ARROW_LEFT; -@@ -1042,7 +1011,6 @@ moz_gtk_tree_header_sort_arrow_paint(cairo_t *cr, GdkRectangle* rect, - gtk_render_arrow(style, cr, arrow_angle, - arrow_rect.x, arrow_rect.y, - arrow_rect.width); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -1067,15 +1035,14 @@ moz_gtk_treeview_expander_paint(cairo_t *cr, GdkRectangle* rect, - else - state_flags = static_cast(state_flags&~(checkbox_check_state)); - -- GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_TREEVIEW_EXPANDER, -- direction, state_flags); -+ GtkStyleContext *style = GetStyleContext(MOZ_GTK_TREEVIEW_EXPANDER, -+ direction, state_flags); - gtk_render_expander(style, cr, - rect->x, - rect->y, - rect->width, - rect->height); - -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -1112,11 +1079,10 @@ moz_gtk_combo_box_paint(cairo_t *cr, GdkRectangle* rect, - calculate_arrow_rect(comboBoxArrow, - &arrow_rect, &real_arrow_rect, direction); - -- style = ClaimStyleContext(MOZ_GTK_COMBOBOX_ARROW); -+ style = GetStyleContext(MOZ_GTK_COMBOBOX_ARROW); - gtk_render_arrow(style, cr, ARROW_DOWN, - real_arrow_rect.x, real_arrow_rect.y, - real_arrow_rect.width); -- ReleaseStyleContext(style); - - /* If there is no separator in the theme, there's nothing left to do. */ - GtkWidget* widget = GetWidget(MOZ_GTK_COMBOBOX_SEPARATOR); -@@ -1187,11 +1153,10 @@ moz_gtk_arrow_paint(cairo_t *cr, GdkRectangle* rect, - calculate_arrow_rect(GetWidget(MOZ_GTK_BUTTON_ARROW), rect, &arrow_rect, - direction); - GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state); -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_BUTTON_ARROW, -- direction, state_flags); -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_BUTTON_ARROW, -+ direction, state_flags); - gtk_render_arrow(style, cr, arrow_angle, - arrow_rect.x, arrow_rect.y, arrow_rect.width); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -1224,11 +1189,10 @@ moz_gtk_combo_box_entry_button_paint(cairo_t *cr, GdkRectangle* rect, - calculate_arrow_rect(GetWidget(MOZ_GTK_COMBOBOX_ENTRY_ARROW), - &arrow_rect, &real_arrow_rect, direction); - -- style = ClaimStyleContext(MOZ_GTK_COMBOBOX_ENTRY_ARROW); -+ style = GetStyleContext(MOZ_GTK_COMBOBOX_ENTRY_ARROW); - gtk_render_arrow(style, cr, ARROW_DOWN, - real_arrow_rect.x, real_arrow_rect.y, - real_arrow_rect.width); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -1239,15 +1203,14 @@ moz_gtk_container_paint(cairo_t *cr, GdkRectangle* rect, - GtkTextDirection direction) - { - GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state); -- GtkStyleContext* style = ClaimStyleContext(widget_type, direction, -- state_flags); -+ GtkStyleContext* style = GetStyleContext(widget_type, direction, -+ state_flags); - /* this is for drawing a prelight box */ - if (state_flags & GTK_STATE_FLAG_PRELIGHT) { - gtk_render_background(style, cr, - rect->x, rect->y, rect->width, rect->height); - } - -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -1260,15 +1223,13 @@ moz_gtk_toggle_label_paint(cairo_t *cr, GdkRectangle* rect, - return MOZ_GTK_SUCCESS; - - GtkStyleContext *style = -- ClaimStyleContext(isradio ? MOZ_GTK_RADIOBUTTON_CONTAINER : -- MOZ_GTK_CHECKBUTTON_CONTAINER, -- direction, -- GetStateFlagsFromGtkWidgetState(state)); -+ GetStyleContext(isradio ? MOZ_GTK_RADIOBUTTON_CONTAINER : -+ MOZ_GTK_CHECKBUTTON_CONTAINER, -+ direction, -+ GetStateFlagsFromGtkWidgetState(state)); - gtk_render_focus(style, cr, - rect->x, rect->y, rect->width, rect->height); - -- ReleaseStyleContext(style); -- - return MOZ_GTK_SUCCESS; - } - -@@ -1276,10 +1237,9 @@ static gint - moz_gtk_toolbar_paint(cairo_t *cr, GdkRectangle* rect, - GtkTextDirection direction) - { -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_TOOLBAR, direction); -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_TOOLBAR, direction); - gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height); - gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -1297,14 +1257,13 @@ moz_gtk_toolbar_separator_paint(cairo_t *cr, GdkRectangle* rect, - const double start_fraction = 0.2; - const double end_fraction = 0.8; - -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_TOOLBAR); -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_TOOLBAR); - gtk_style_context_get_style(style, - "wide-separators", &wide_separators, - "separator-width", &separator_width, - NULL); -- ReleaseStyleContext(style); - -- style = ClaimStyleContext(MOZ_GTK_TOOLBAR_SEPARATOR, direction); -+ style = GetStyleContext(MOZ_GTK_TOOLBAR_SEPARATOR, direction); - if (wide_separators) { - if (separator_width > rect->width) - separator_width = rect->width; -@@ -1328,7 +1287,6 @@ moz_gtk_toolbar_separator_paint(cairo_t *cr, GdkRectangle* rect, - rect->x + (rect->width - paint_width) / 2, - rect->y + rect->height * end_fraction); - } -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -1345,11 +1303,10 @@ moz_gtk_tooltip_paint(cairo_t *cr, const GdkRectangle* aRect, - // We have to draw all elements with appropriate offset and right dimensions. - - // Tooltip drawing -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_TOOLTIP, direction); -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_TOOLTIP, direction); - GdkRectangle rect = *aRect; - gtk_render_background(style, cr, rect.x, rect.y, rect.width, rect.height); - gtk_render_frame(style, cr, rect.x, rect.y, rect.width, rect.height); -- ReleaseStyleContext(style); - - // Horizontal Box drawing - // -@@ -1359,7 +1316,7 @@ moz_gtk_tooltip_paint(cairo_t *cr, const GdkRectangle* aRect, - // 6px margin. - // For drawing Horizontal Box we have to inset drawing area by that 6px - // plus its CSS margin. -- GtkStyleContext* boxStyle = ClaimStyleContext(MOZ_GTK_TOOLTIP_BOX, direction); -+ GtkStyleContext* boxStyle = GetStyleContext(MOZ_GTK_TOOLTIP_BOX, direction); - - rect.x += 6; - rect.y += 6; -@@ -1372,12 +1329,10 @@ moz_gtk_tooltip_paint(cairo_t *cr, const GdkRectangle* aRect, - - // Label drawing - InsetByBorderPadding(&rect, boxStyle); -- ReleaseStyleContext(boxStyle); - - GtkStyleContext* labelStyle = -- ClaimStyleContext(MOZ_GTK_TOOLTIP_BOX_LABEL, direction); -+ GetStyleContext(MOZ_GTK_TOOLTIP_BOX_LABEL, direction); - moz_gtk_draw_styled_frame(labelStyle, cr, &rect, false); -- ReleaseStyleContext(labelStyle); - - return MOZ_GTK_SUCCESS; - } -@@ -1388,8 +1343,8 @@ moz_gtk_resizer_paint(cairo_t *cr, GdkRectangle* rect, - GtkTextDirection direction) - { - GtkStyleContext* style = -- ClaimStyleContext(MOZ_GTK_RESIZER, GTK_TEXT_DIR_LTR, -- GetStateFlagsFromGtkWidgetState(state)); -+ GetStyleContext(MOZ_GTK_RESIZER, GTK_TEXT_DIR_LTR, -+ GetStateFlagsFromGtkWidgetState(state)); - - // Workaround unico not respecting the text direction for resizers. - // See bug 1174248. -@@ -1403,7 +1358,6 @@ moz_gtk_resizer_paint(cairo_t *cr, GdkRectangle* rect, - - gtk_render_handle(style, cr, rect->x, rect->y, rect->width, rect->height); - cairo_restore(cr); -- ReleaseStyleContext(style); - - return MOZ_GTK_SUCCESS; - } -@@ -1412,9 +1366,8 @@ static gint - moz_gtk_frame_paint(cairo_t *cr, GdkRectangle* rect, - GtkTextDirection direction) - { -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_FRAME, direction); -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_FRAME, direction); - gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -1422,11 +1375,10 @@ static gint - moz_gtk_progressbar_paint(cairo_t *cr, GdkRectangle* rect, - GtkTextDirection direction) - { -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_PROGRESS_TROUGH, -- direction); -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_PROGRESS_TROUGH, -+ direction); - gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height); - gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height); -- ReleaseStyleContext(style); - - return MOZ_GTK_SUCCESS; - } -@@ -1437,7 +1389,7 @@ moz_gtk_progress_chunk_paint(cairo_t *cr, GdkRectangle* rect, - WidgetNodeType widget) - { - GtkStyleContext* style = -- ClaimStyleContext(MOZ_GTK_PROGRESS_CHUNK, direction); -+ GetStyleContext(MOZ_GTK_PROGRESS_CHUNK, direction); - - if (widget == MOZ_GTK_PROGRESS_CHUNK_INDETERMINATE || - widget == MOZ_GTK_PROGRESS_CHUNK_VERTICAL_INDETERMINATE) { -@@ -1481,7 +1433,6 @@ moz_gtk_progress_chunk_paint(cairo_t *cr, GdkRectangle* rect, - } else { - gtk_render_activity(style, cr, rect->x, rect->y, rect->width, rect->height); - } -- ReleaseStyleContext(style); - - return MOZ_GTK_SUCCESS; - } -@@ -1503,9 +1454,8 @@ moz_gtk_get_tab_thickness(GtkStyleContext *style) - gint - moz_gtk_get_tab_thickness(WidgetNodeType aNodeType) - { -- GtkStyleContext *style = ClaimStyleContext(aNodeType); -+ GtkStyleContext *style = GetStyleContext(aNodeType); - int thickness = moz_gtk_get_tab_thickness(style); -- ReleaseStyleContext(style); - return thickness; - } - -@@ -1528,8 +1478,8 @@ moz_gtk_tab_paint(cairo_t *cr, GdkRectangle* rect, - int initial_gap = 0; - bool isBottomTab = (widget == MOZ_GTK_TAB_BOTTOM); - -- style = ClaimStyleContext(widget, direction, -- GetStateFlagsFromGtkTabFlags(flags)); -+ style = GetStyleContext(widget, direction, -+ GetStateFlagsFromGtkTabFlags(flags)); - tabRect = *rect; - - if (flags & MOZ_GTK_TAB_FIRST) { -@@ -1606,7 +1556,7 @@ moz_gtk_tab_paint(cairo_t *cr, GdkRectangle* rect, - } - - GtkStyleContext* panelStyle = -- ClaimStyleContext(MOZ_GTK_TABPANELS, direction); -+ GetStyleContext(MOZ_GTK_TABPANELS, direction); - - if (isBottomTab) { - /* Draw the tab on bottom */ -@@ -1681,7 +1631,6 @@ moz_gtk_tab_paint(cairo_t *cr, GdkRectangle* rect, - gtk_render_focus(style, cr, - focusRect.x, focusRect.y, focusRect.width, focusRect.height); - } -- ReleaseStyleContext(style); - - return MOZ_GTK_SUCCESS; - } -@@ -1691,7 +1640,7 @@ static gint - moz_gtk_tabpanels_paint(cairo_t *cr, GdkRectangle* rect, - GtkTextDirection direction) - { -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_TABPANELS, direction); -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_TABPANELS, direction); - gtk_render_background(style, cr, rect->x, rect->y, - rect->width, rect->height); - /* -@@ -1728,7 +1677,6 @@ moz_gtk_tabpanels_paint(cairo_t *cr, GdkRectangle* rect, - GTK_POS_TOP, 0, 1); - cairo_restore(cr); - -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -1763,11 +1711,10 @@ moz_gtk_tab_scroll_arrow_paint(cairo_t *cr, GdkRectangle* rect, - break; - } - if (arrow_type != GTK_ARROW_NONE) { -- style = ClaimStyleContext(MOZ_GTK_TAB_SCROLLARROW, direction, -- GetStateFlagsFromGtkWidgetState(state)); -+ style = GetStyleContext(MOZ_GTK_TAB_SCROLLARROW, direction, -+ GetStateFlagsFromGtkWidgetState(state)); - gtk_render_arrow(style, cr, arrow_angle, - x, y, arrow_size); -- ReleaseStyleContext(style); - } - return MOZ_GTK_SUCCESS; - } -@@ -1833,7 +1780,7 @@ moz_gtk_menu_separator_paint(cairo_t *cr, GdkRectangle* rect, - gint x, y, w; - GtkBorder padding; - -- style = ClaimStyleContext(MOZ_GTK_MENUSEPARATOR, direction); -+ style = GetStyleContext(MOZ_GTK_MENUSEPARATOR, direction); - gtk_style_context_get_padding(style, GTK_STATE_FLAG_NORMAL, &padding); - - x = rect->x; -@@ -1863,7 +1810,6 @@ moz_gtk_menu_separator_paint(cairo_t *cr, GdkRectangle* rect, - } - - gtk_style_context_restore(style); -- ReleaseStyleContext(style); - - return MOZ_GTK_SUCCESS; - } -@@ -1883,7 +1829,7 @@ moz_gtk_menu_item_paint(WidgetNodeType widget, cairo_t *cr, GdkRectangle* rect, - !(state_flags & GTK_STATE_FLAG_PRELIGHT))) - return MOZ_GTK_SUCCESS; - -- GtkStyleContext* style = ClaimStyleContext(widget, direction, state_flags); -+ GtkStyleContext* style = GetStyleContext(widget, direction, state_flags); - - if (minorVersion < 6) { - // GTK+ 3.4 saves the style context and adds the menubar class to -@@ -1906,7 +1852,6 @@ moz_gtk_menu_item_paint(WidgetNodeType widget, cairo_t *cr, GdkRectangle* rect, - if (minorVersion < 6) { - gtk_style_context_restore(style); - } -- ReleaseStyleContext(style); - - return MOZ_GTK_SUCCESS; - } -@@ -1917,12 +1862,11 @@ moz_gtk_menu_arrow_paint(cairo_t *cr, GdkRectangle* rect, - GtkTextDirection direction) - { - GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state); -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_MENUITEM, -- direction, state_flags); -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_MENUITEM, -+ direction, state_flags); - gtk_render_arrow(style, cr, - (direction == GTK_TEXT_DIR_LTR) ? ARROW_RIGHT : ARROW_LEFT, - rect->x, rect->y, rect->width); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -1947,7 +1891,7 @@ moz_gtk_check_menu_item_paint(WidgetNodeType widgetType, - - bool pre_3_20 = gtk_get_minor_version() < 20; - gint offset; -- style = ClaimStyleContext(widgetType, direction); -+ style = GetStyleContext(widgetType, direction); - gtk_style_context_get_style(style, - "indicator-size", &indicator_size, - "horizontal-padding", &horizontal_padding, -@@ -1962,12 +1906,11 @@ moz_gtk_check_menu_item_paint(WidgetNodeType widgetType, - InsetByBorderPadding(&r, style); - offset = r.x; - } -- ReleaseStyleContext(style); - - bool isRadio = (widgetType == MOZ_GTK_RADIOMENUITEM); - WidgetNodeType indicatorType = isRadio ? MOZ_GTK_RADIOMENUITEM_INDICATOR - : MOZ_GTK_CHECKMENUITEM_INDICATOR; -- style = ClaimStyleContext(indicatorType, direction, state_flags); -+ style = GetStyleContext(indicatorType, direction, state_flags); - - if (direction == GTK_TEXT_DIR_RTL) { - x = rect->width - indicator_size - offset; -@@ -1987,7 +1930,6 @@ moz_gtk_check_menu_item_paint(WidgetNodeType widgetType, - } else { - gtk_render_check(style, cr, x, y, indicator_size, indicator_size); - } -- ReleaseStyleContext(style); - - return MOZ_GTK_SUCCESS; - } -@@ -1997,12 +1939,11 @@ moz_gtk_info_bar_paint(cairo_t *cr, GdkRectangle* rect, - GtkWidgetState* state) - { - GtkStyleContext *style = -- ClaimStyleContext(MOZ_GTK_INFO_BAR, GTK_TEXT_DIR_LTR, -- GetStateFlagsFromGtkWidgetState(state)); -+ GetStyleContext(MOZ_GTK_INFO_BAR, GTK_TEXT_DIR_LTR, -+ GetStateFlagsFromGtkWidgetState(state)); - gtk_render_background(style, cr, rect->x, rect->y, rect->width, - rect->height); - gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height); -- ReleaseStyleContext(style); - - return MOZ_GTK_SUCCESS; - } -@@ -2087,7 +2028,7 @@ moz_gtk_get_widget_border(WidgetNodeType widget, gint* left, gint* top, - case MOZ_GTK_BUTTON: - case MOZ_GTK_TOOLBAR_BUTTON: - { -- style = ClaimStyleContext(MOZ_GTK_BUTTON); -+ style = GetStyleContext(MOZ_GTK_BUTTON); - - *left = *top = *right = *bottom = - gtk_container_get_border_width(GTK_CONTAINER(GetWidget(MOZ_GTK_BUTTON))); -@@ -2104,12 +2045,11 @@ moz_gtk_get_widget_border(WidgetNodeType widget, gint* left, gint* top, - - moz_gtk_add_style_border(style, left, top, right, bottom); - -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - case MOZ_GTK_ENTRY: - { -- style = ClaimStyleContext(MOZ_GTK_ENTRY); -+ style = GetStyleContext(MOZ_GTK_ENTRY); - - // XXX: Subtract 1 pixel from the padding to account for the default - // padding in forms.css. See bug 1187385. -@@ -2117,15 +2057,13 @@ moz_gtk_get_widget_border(WidgetNodeType widget, gint* left, gint* top, - moz_gtk_add_style_padding(style, left, top, right, bottom); - moz_gtk_add_style_border(style, left, top, right, bottom); - -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - case MOZ_GTK_TEXT_VIEW: - case MOZ_GTK_TREEVIEW: - { -- style = ClaimStyleContext(MOZ_GTK_SCROLLED_WINDOW); -+ style = GetStyleContext(MOZ_GTK_SCROLLED_WINDOW); - moz_gtk_add_style_border(style, left, top, right, bottom); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - case MOZ_GTK_TREE_HEADER_CELL: -@@ -2139,10 +2077,9 @@ moz_gtk_get_widget_border(WidgetNodeType widget, gint* left, gint* top, - gtk_container_get_border_width(GTK_CONTAINER( - GetWidget(MOZ_GTK_TREE_HEADER_CELL))); - -- style = ClaimStyleContext(MOZ_GTK_TREE_HEADER_CELL); -+ style = GetStyleContext(MOZ_GTK_TREE_HEADER_CELL); - moz_gtk_add_style_border(style, left, top, right, bottom); - moz_gtk_add_style_padding(style, left, top, right, bottom); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - case MOZ_GTK_TREE_HEADER_SORTARROW: -@@ -2167,10 +2104,9 @@ moz_gtk_get_widget_border(WidgetNodeType widget, gint* left, gint* top, - *left = *top = *right = *bottom = - gtk_container_get_border_width(GTK_CONTAINER( - GetWidget(MOZ_GTK_COMBOBOX_BUTTON))); -- style = ClaimStyleContext(MOZ_GTK_COMBOBOX_BUTTON); -+ style = GetStyleContext(MOZ_GTK_COMBOBOX_BUTTON); - moz_gtk_add_style_padding(style, left, top, right, bottom); - moz_gtk_add_style_border(style, left, top, right, bottom); -- ReleaseStyleContext(style); - - /* If there is no separator, don't try to count its width. */ - separator_width = 0; -@@ -2241,7 +2177,7 @@ moz_gtk_get_widget_border(WidgetNodeType widget, gint* left, gint* top, - // Bug 1274143 for MOZ_GTK_MENUBARITEM - WidgetNodeType type = - widget == MOZ_GTK_MENUBARITEM ? MOZ_GTK_MENUITEM : widget; -- style = ClaimStyleContext(type); -+ style = GetStyleContext(type); - - if (gtk_get_minor_version() < 20) { - moz_gtk_add_style_padding(style, left, top, right, bottom); -@@ -2249,7 +2185,6 @@ moz_gtk_get_widget_border(WidgetNodeType widget, gint* left, gint* top, - moz_gtk_add_margin_border_padding(style, - left, top, right, bottom); - } -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - case MOZ_GTK_INFO_BAR: -@@ -2265,15 +2200,13 @@ moz_gtk_get_widget_border(WidgetNodeType widget, gint* left, gint* top, - // We also need to add margin/padding/borders from Tooltip content. - // Tooltip contains horizontal box, where icon and label is put. - // We ignore icon as long as we don't have support for it. -- GtkStyleContext* boxStyle = ClaimStyleContext(MOZ_GTK_TOOLTIP_BOX); -+ GtkStyleContext* boxStyle = GetStyleContext(MOZ_GTK_TOOLTIP_BOX); - moz_gtk_add_margin_border_padding(boxStyle, - left, top, right, bottom); -- ReleaseStyleContext(boxStyle); - -- GtkStyleContext* labelStyle = ClaimStyleContext(MOZ_GTK_TOOLTIP_BOX_LABEL); -+ GtkStyleContext* labelStyle = GetStyleContext(MOZ_GTK_TOOLTIP_BOX_LABEL); - moz_gtk_add_margin_border_padding(labelStyle, - left, top, right, bottom); -- ReleaseStyleContext(labelStyle); - - return MOZ_GTK_SUCCESS; - } -@@ -2324,7 +2257,7 @@ moz_gtk_get_tab_border(gint* left, gint* top, gint* right, gint* bottom, - GtkTextDirection direction, GtkTabFlags flags, - WidgetNodeType widget) - { -- GtkStyleContext* style = ClaimStyleContext(widget, direction, -+ GtkStyleContext* style = GetStyleContext(widget, direction, - GetStateFlagsFromGtkTabFlags(flags)); - - *left = *top = *right = *bottom = 0; -@@ -2354,15 +2287,13 @@ moz_gtk_get_tab_border(gint* left, gint* top, gint* right, gint* bottom, - *right += margin.right; - - if (flags & MOZ_GTK_TAB_FIRST) { -- ReleaseStyleContext(style); -- style = ClaimStyleContext(MOZ_GTK_NOTEBOOK_HEADER, direction); -+ style = GetStyleContext(MOZ_GTK_NOTEBOOK_HEADER, direction); - gtk_style_context_get_margin(style, GTK_STATE_FLAG_NORMAL, &margin); - *left += margin.left; - *right += margin.right; - } - } - -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -2389,11 +2320,10 @@ moz_gtk_get_tab_scroll_arrow_size(gint* width, gint* height) - { - gint arrow_size; - -- GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_TABPANELS); -+ GtkStyleContext *style = GetStyleContext(MOZ_GTK_TABPANELS); - gtk_style_context_get_style(style, - "scroll-arrow-hlength", &arrow_size, - NULL); -- ReleaseStyleContext(style); - - *height = *width = arrow_size; - -@@ -2426,7 +2356,7 @@ moz_gtk_get_toolbar_separator_width(gint* size) - gint separator_width; - GtkBorder border; - -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_TOOLBAR); -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_TOOLBAR); - gtk_style_context_get_style(style, - "space-size", size, - "wide-separators", &wide_separators, -@@ -2435,27 +2365,24 @@ moz_gtk_get_toolbar_separator_width(gint* size) - /* Just in case... */ - gtk_style_context_get_border(style, GTK_STATE_FLAG_NORMAL, &border); - *size = MAX(*size, (wide_separators ? separator_width : border.left)); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - - gint - moz_gtk_get_expander_size(gint* size) - { -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_EXPANDER); -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_EXPANDER); - gtk_style_context_get_style(style, - "expander-size", size, - NULL); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - - gint - moz_gtk_get_treeview_expander_size(gint* size) - { -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_TREEVIEW); -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_TREEVIEW); - gtk_style_context_get_style(style, "expander-size", size, NULL); -- ReleaseStyleContext(style); - return MOZ_GTK_SUCCESS; - } - -@@ -2466,7 +2393,7 @@ moz_gtk_get_menu_separator_height(gint *size) - gboolean wide_separators; - gint separator_height; - GtkBorder padding; -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_MENUSEPARATOR); -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_MENUSEPARATOR); - gtk_style_context_get_padding(style, GTK_STATE_FLAG_NORMAL, &padding); - - gtk_style_context_save(style); -@@ -2478,7 +2405,6 @@ moz_gtk_get_menu_separator_height(gint *size) - NULL); - - gtk_style_context_restore(style); -- ReleaseStyleContext(style); - - *size = padding.top + padding.bottom; - *size += (wide_separators) ? separator_height : 1; -@@ -2489,7 +2415,7 @@ moz_gtk_get_menu_separator_height(gint *size) - void - moz_gtk_get_entry_min_height(gint* height) - { -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_ENTRY); -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_ENTRY); - if (!gtk_check_version(3, 20, 0)) { - gtk_style_context_get(style, gtk_style_context_get_state(style), - "min-height", height, -@@ -2504,7 +2430,6 @@ moz_gtk_get_entry_min_height(gint* height) - gtk_style_context_get_padding(style, GTK_STATE_FLAG_NORMAL, &padding); - - *height += (border.top + border.bottom + padding.top + padding.bottom); -- ReleaseStyleContext(style); - } - - void -@@ -2519,7 +2444,7 @@ moz_gtk_get_scale_metrics(GtkOrientation orient, gint* scale_width, - gint thumb_length, thumb_height, trough_border; - moz_gtk_get_scalethumb_metrics(orient, &thumb_length, &thumb_height); - -- GtkStyleContext* style = ClaimStyleContext(widget); -+ GtkStyleContext* style = GetStyleContext(widget); - gtk_style_context_get_style(style, "trough-border", &trough_border, NULL); - - if (orient == GTK_ORIENTATION_HORIZONTAL) { -@@ -2529,7 +2454,6 @@ moz_gtk_get_scale_metrics(GtkOrientation orient, gint* scale_width, - *scale_width = thumb_height + trough_border * 2; - *scale_height = thumb_length + trough_border * 2; - } -- ReleaseStyleContext(style); - } else { - WidgetNodeType widget = (orient == GTK_ORIENTATION_HORIZONTAL) ? - MOZ_GTK_SCALE_TROUGH_HORIZONTAL : -@@ -2546,17 +2470,16 @@ moz_gtk_get_scalethumb_metrics(GtkOrientation orient, gint* thumb_length, gint* - WidgetNodeType widget = (orient == GTK_ORIENTATION_HORIZONTAL) ? - MOZ_GTK_SCALE_HORIZONTAL: - MOZ_GTK_SCALE_VERTICAL; -- GtkStyleContext* style = ClaimStyleContext(widget); -+ GtkStyleContext* style = GetStyleContext(widget); - gtk_style_context_get_style(style, - "slider_length", thumb_length, - "slider_width", thumb_height, - NULL); -- ReleaseStyleContext(style); - } else { - WidgetNodeType widget = (orient == GTK_ORIENTATION_HORIZONTAL) ? - MOZ_GTK_SCALE_THUMB_HORIZONTAL: - MOZ_GTK_SCALE_THUMB_VERTICAL; -- GtkStyleContext* style = ClaimStyleContext(widget); -+ GtkStyleContext* style = GetStyleContext(widget); - - gint min_width, min_height; - GtkStateFlags state = gtk_style_context_get_state(style); -@@ -2578,8 +2501,6 @@ moz_gtk_get_scalethumb_metrics(GtkOrientation orient, gint* thumb_length, gint* - - *thumb_length = min_width; - *thumb_height = min_height; -- -- ReleaseStyleContext(style); - } - - return MOZ_GTK_SUCCESS; -@@ -2606,7 +2527,7 @@ GetScrollbarMetrics(GtkOrientation aOrientation) - MOZ_GTK_SCROLLBAR_HORIZONTAL : MOZ_GTK_SCROLLBAR_VERTICAL; - - gboolean backward, forward, secondary_backward, secondary_forward; -- GtkStyleContext* style = ClaimStyleContext(scrollbar); -+ GtkStyleContext* style = GetStyleContext(scrollbar); - gtk_style_context_get_style(style, - "has-backward-stepper", &backward, - "has-forward-stepper", &forward, -@@ -2626,7 +2547,6 @@ GetScrollbarMetrics(GtkOrientation aOrientation) - "stepper-size", &stepper_size, - "min-slider-length", &min_slider_size, - nullptr); -- ReleaseStyleContext(style); - - metrics->size.thumb = - SizeFromLengthAndBreadth(aOrientation, min_slider_size, slider_width); -@@ -2663,7 +2583,6 @@ GetScrollbarMetrics(GtkOrientation aOrientation) - // GTK version > 3.20 - // scrollbar - metrics->border.scrollbar = GetMarginBorderPadding(style); -- ReleaseStyleContext(style); - - WidgetNodeType contents, track, thumb; - if (aOrientation == GTK_ORIENTATION_HORIZONTAL) { -@@ -2678,10 +2597,9 @@ GetScrollbarMetrics(GtkOrientation aOrientation) - // thumb - metrics->size.thumb = GetMinMarginBox(thumb); - // track -- style = ClaimStyleContext(track); -+ style = GetStyleContext(track); - metrics->border.track = GetMarginBorderPadding(style); - MozGtkSize trackMinSize = GetMinContentBox(style) + metrics->border.track; -- ReleaseStyleContext(style); - MozGtkSize trackSizeForThumb = metrics->size.thumb + metrics->border.track; - // button - if (hasButtons) { -@@ -2719,9 +2637,8 @@ GetScrollbarMetrics(GtkOrientation aOrientation) - } - } - -- style = ClaimStyleContext(contents); -+ style = GetStyleContext(contents); - GtkBorder contentsBorder = GetMarginBorderPadding(style); -- ReleaseStyleContext(style); - - metrics->size.scrollbar = - trackSizeForThumb + contentsBorder + metrics->border.scrollbar; -@@ -2771,10 +2688,9 @@ moz_gtk_widget_paint(WidgetNodeType widget, cairo_t *cr, - case MOZ_GTK_SCROLLBAR_VERTICAL: - if (flags & MOZ_GTK_TRACK_OPAQUE) { - GtkStyleContext* style = -- ClaimStyleContext(MOZ_GTK_WINDOW, direction); -+ GetStyleContext(MOZ_GTK_WINDOW, direction); - gtk_render_background(style, cr, - rect->x, rect->y, rect->width, rect->height); -- ReleaseStyleContext(style); - } - if (gtk_check_version(3,20,0) == nullptr) { - return moz_gtk_scrollbar_paint(widget, cr, rect, state, direction); -@@ -2818,10 +2734,10 @@ moz_gtk_widget_paint(WidgetNodeType widget, cairo_t *cr, - break; - case MOZ_GTK_SPINBUTTON_ENTRY: - { -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_SPINBUTTON_ENTRY, -- direction, GetStateFlagsFromGtkWidgetState(state)); -+ GtkStyleContext* style = -+ GetStyleContext(MOZ_GTK_SPINBUTTON_ENTRY, direction, -+ GetStateFlagsFromGtkWidgetState(state)); - gint ret = moz_gtk_entry_paint(cr, rect, state, style); -- ReleaseStyleContext(style); - return ret; - } - break; -@@ -2849,10 +2765,10 @@ moz_gtk_widget_paint(WidgetNodeType widget, cairo_t *cr, - break; - case MOZ_GTK_ENTRY: - { -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_ENTRY, -- direction, GetStateFlagsFromGtkWidgetState(state)); -+ GtkStyleContext* style = -+ GetStyleContext(MOZ_GTK_ENTRY, direction, -+ GetStateFlagsFromGtkWidgetState(state)); - gint ret = moz_gtk_entry_paint(cr, rect, state, style); -- ReleaseStyleContext(style); - return ret; - } - case MOZ_GTK_TEXT_VIEW: -@@ -2867,10 +2783,10 @@ moz_gtk_widget_paint(WidgetNodeType widget, cairo_t *cr, - break; - case MOZ_GTK_DROPDOWN_ENTRY: - { -- GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_COMBOBOX_ENTRY_TEXTAREA, -- direction, GetStateFlagsFromGtkWidgetState(state)); -+ GtkStyleContext* style = -+ GetStyleContext(MOZ_GTK_COMBOBOX_ENTRY_TEXTAREA, direction, -+ GetStateFlagsFromGtkWidgetState(state)); - gint ret = moz_gtk_entry_paint(cr, rect, state, style); -- ReleaseStyleContext(style); - return ret; - } - break; -diff --git widget/gtk/nsLookAndFeel.cpp widget/gtk/nsLookAndFeel.cpp -index f4c35d82200a..9a2684412ee8 100644 ---- widget/gtk/nsLookAndFeel.cpp -+++ widget/gtk/nsLookAndFeel.cpp -@@ -300,21 +300,19 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) - // css2 http://www.w3.org/TR/REC-CSS2/ui.html#system-colors - case eColorID_activeborder: { - // active window border -- GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_WINDOW); -+ GtkStyleContext *style = GetStyleContext(MOZ_GTK_WINDOW); - gtk_style_context_get_border_color(style, - GTK_STATE_FLAG_NORMAL, &gdk_color); - aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); -- ReleaseStyleContext(style); - break; - } - case eColorID_inactiveborder: { - // inactive window border -- GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_WINDOW); -+ GtkStyleContext *style = GetStyleContext(MOZ_GTK_WINDOW); - gtk_style_context_get_border_color(style, - GTK_STATE_FLAG_INSENSITIVE, - &gdk_color); - aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); -- ReleaseStyleContext(style); - break; - } - case eColorID_graytext: // disabled text in windows, menus, etc. -@@ -323,12 +321,11 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) - break; - case eColorID_inactivecaption: { - // inactive window caption -- GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_WINDOW); -+ GtkStyleContext *style = GetStyleContext(MOZ_GTK_WINDOW); - gtk_style_context_get_background_color(style, - GTK_STATE_FLAG_INSENSITIVE, - &gdk_color); - aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); -- ReleaseStyleContext(style); - break; - } - case eColorID_infobackground: -@@ -394,20 +391,18 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) - break; - case eColorID__moz_buttondefault: { - // default button border color -- GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_BUTTON); -+ GtkStyleContext *style = GetStyleContext(MOZ_GTK_BUTTON); - gtk_style_context_get_border_color(style, - GTK_STATE_FLAG_NORMAL, &gdk_color); - aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); -- ReleaseStyleContext(style); - break; - } - case eColorID__moz_buttonhoverface: { -- GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_BUTTON); -+ GtkStyleContext *style = GetStyleContext(MOZ_GTK_BUTTON); - gtk_style_context_get_background_color(style, - GTK_STATE_FLAG_PRELIGHT, - &gdk_color); - aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); -- ReleaseStyleContext(style); - break; - } - case eColorID__moz_buttonhovertext: -@@ -858,38 +853,33 @@ nsLookAndFeel::EnsureInit() - g_object_ref_sink(labelWidget); - - // Scrollbar colors -- style = ClaimStyleContext(MOZ_GTK_SCROLLBAR_TROUGH_VERTICAL); -+ style = GetStyleContext(MOZ_GTK_SCROLLBAR_TROUGH_VERTICAL); - gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color); - sMozScrollbar = GDK_RGBA_TO_NS_RGBA(color); -- ReleaseStyleContext(style); - - // Window colors -- style = ClaimStyleContext(MOZ_GTK_WINDOW); -+ style = GetStyleContext(MOZ_GTK_WINDOW); - gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color); - sMozWindowBackground = GDK_RGBA_TO_NS_RGBA(color); - 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); -+ style = GetStyleContext(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); -+ style = GetStyleContext(MOZ_GTK_TOOLTIP); - gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color); - sInfoBackground = GDK_RGBA_TO_NS_RGBA(color); -- ReleaseStyleContext(style); - -- style = ClaimStyleContext(MOZ_GTK_TOOLTIP_BOX_LABEL); -+ style = GetStyleContext(MOZ_GTK_TOOLTIP_BOX_LABEL); - gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &color); - sInfoText = GDK_RGBA_TO_NS_RGBA(color); -- ReleaseStyleContext(style); - -- style = ClaimStyleContext(MOZ_GTK_MENUITEM); -+ style = GetStyleContext(MOZ_GTK_MENUITEM); - { - GtkStyleContext* accelStyle = - CreateStyleForWidget(gtk_accel_label_new("M"), style); -@@ -902,19 +892,16 @@ nsLookAndFeel::EnsureInit() - sMenuTextInactive = GDK_RGBA_TO_NS_RGBA(color); - g_object_unref(accelStyle); - } -- ReleaseStyleContext(style); - -- style = ClaimStyleContext(MOZ_GTK_MENUPOPUP); -+ style = GetStyleContext(MOZ_GTK_MENUPOPUP); - gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color); - sMenuBackground = GDK_RGBA_TO_NS_RGBA(color); -- ReleaseStyleContext(style); - -- style = ClaimStyleContext(MOZ_GTK_MENUITEM); -+ style = GetStyleContext(MOZ_GTK_MENUITEM); - gtk_style_context_get_background_color(style, GTK_STATE_FLAG_PRELIGHT, &color); - sMenuHover = GDK_RGBA_TO_NS_RGBA(color); - gtk_style_context_get_color(style, GTK_STATE_FLAG_PRELIGHT, &color); - sMenuHoverText = GDK_RGBA_TO_NS_RGBA(color); -- ReleaseStyleContext(style); - - GtkWidget *parent = gtk_fixed_new(); - GtkWidget *window = gtk_window_new(GTK_WINDOW_POPUP); -@@ -937,12 +924,11 @@ nsLookAndFeel::EnsureInit() - GdkRGBA bgColor; - // If the text window background is translucent, then the background of - // the textview root node is visible. -- style = ClaimStyleContext(MOZ_GTK_TEXT_VIEW); -+ style = GetStyleContext(MOZ_GTK_TEXT_VIEW); - gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, - &bgColor); -- ReleaseStyleContext(style); - -- style = ClaimStyleContext(MOZ_GTK_TEXT_VIEW_TEXT); -+ style = GetStyleContext(MOZ_GTK_TEXT_VIEW_TEXT); - gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, - &color); - ApplyColorOver(color, &bgColor); -@@ -959,10 +945,9 @@ nsLookAndFeel::EnsureInit() - static_cast(GTK_STATE_FLAG_FOCUSED|GTK_STATE_FLAG_SELECTED), - &color); - sTextSelectedText = GDK_RGBA_TO_NS_RGBA(color); -- ReleaseStyleContext(style); - - // Button text color -- style = ClaimStyleContext(MOZ_GTK_BUTTON); -+ style = GetStyleContext(MOZ_GTK_BUTTON); - { - GtkStyleContext* labelStyle = CreateStyleForWidget(labelWidget, style); - -@@ -974,21 +959,18 @@ nsLookAndFeel::EnsureInit() - sButtonHoverText = GDK_RGBA_TO_NS_RGBA(color); - g_object_unref(labelStyle); - } -- ReleaseStyleContext(style); - - // Combobox text color -- style = ClaimStyleContext(MOZ_GTK_COMBOBOX_ENTRY_TEXTAREA); -+ style = GetStyleContext(MOZ_GTK_COMBOBOX_ENTRY_TEXTAREA); - gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &color); - sComboBoxText = GDK_RGBA_TO_NS_RGBA(color); -- ReleaseStyleContext(style); - - // Menubar text and hover text colors -- style = ClaimStyleContext(MOZ_GTK_MENUBARITEM); -+ style = GetStyleContext(MOZ_GTK_MENUBARITEM); - gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &color); - sMenuBarText = GDK_RGBA_TO_NS_RGBA(color); - gtk_style_context_get_color(style, GTK_STATE_FLAG_PRELIGHT, &color); - sMenuBarHoverText = GDK_RGBA_TO_NS_RGBA(color); -- ReleaseStyleContext(style); - - // GTK's guide to fancy odd row background colors: - // 1) Check if a theme explicitly defines an odd row color -@@ -996,7 +978,7 @@ nsLookAndFeel::EnsureInit() - // slightly by a hardcoded value (gtkstyle.c) - // 3) If neither are defined, take the base background color and - // darken that by a hardcoded value -- style = ClaimStyleContext(MOZ_GTK_TREEVIEW); -+ style = GetStyleContext(MOZ_GTK_TREEVIEW); - - // Get odd row background color - gtk_style_context_save(style); -@@ -1004,20 +986,17 @@ nsLookAndFeel::EnsureInit() - gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color); - sOddCellBackground = GDK_RGBA_TO_NS_RGBA(color); - gtk_style_context_restore(style); -- ReleaseStyleContext(style); - - // GtkFrame has a "border" subnode on which Adwaita draws the border. - // Some themes do not draw on this node but draw a border on the widget - // root node, so check the root node if no border is found on the border - // node. -- style = ClaimStyleContext(MOZ_GTK_FRAME_BORDER); -+ style = GetStyleContext(MOZ_GTK_FRAME_BORDER); - bool themeUsesColors = - GetBorderColors(style, &sFrameOuterLightBorder, &sFrameInnerDarkBorder); -- ReleaseStyleContext(style); - if (!themeUsesColors) { -- style = ClaimStyleContext(MOZ_GTK_FRAME); -+ style = GetStyleContext(MOZ_GTK_FRAME); - GetBorderColors(style, &sFrameOuterLightBorder, &sFrameInnerDarkBorder); -- ReleaseStyleContext(style); - } - - // GtkInfoBar diff --git a/www/waterfox/files/patch-bug1397114 b/www/waterfox/files/patch-bug1397114 deleted file mode 100644 index fe12dce4f535..000000000000 --- a/www/waterfox/files/patch-bug1397114 +++ /dev/null @@ -1,105 +0,0 @@ -commit 92b82f64e587 -Author: Scott Wu -Date: Wed Sep 20 16:45:03 2017 +0800 - - Bug 1397114 - Disable smooth scrolling when value changes come from input box. r=mconley, a=ritu - - MozReview-Commit-ID: 9ZLSB2HQvcu - - --HG-- - extra : source : f215f88437f1db1884858be2c78582ab2b11bbb0 ---- - toolkit/content/widgets/datepicker.js | 11 ++++++----- - toolkit/content/widgets/spinner.js | 16 ++-------------- - 2 files changed, 8 insertions(+), 19 deletions(-) - -diff --git toolkit/content/widgets/datepicker.js toolkit/content/widgets/datepicker.js -index 31651dc63665..b125c5103a9a 100644 ---- toolkit/content/widgets/datepicker.js -+++ toolkit/content/widgets/datepicker.js -@@ -133,7 +133,7 @@ function DatePicker(context) { - /** - * Update date picker and its components. - */ -- _update() { -+ _update(options = {}) { - const { dateKeeper, isMonthPickerVisible } = this.state; - - if (isMonthPickerVisible) { -@@ -148,7 +148,8 @@ function DatePicker(context) { - dateObj: dateKeeper.state.dateObj, - months: this.state.months, - years: this.state.years, -- toggleMonthPicker: this.state.toggleMonthPicker -+ toggleMonthPicker: this.state.toggleMonthPicker, -+ noSmoothScroll: options.noSmoothScroll - }); - this.components.calendar.setProps({ - isVisible: !isMonthPickerVisible, -@@ -269,7 +270,7 @@ function DatePicker(context) { - dateKeeper.setSelection({ - year, month, day - }); -- this._update(); -+ this._update({ noSmoothScroll: true }); - } - }; - -@@ -350,14 +351,14 @@ function DatePicker(context) { - items: props.months, - isInfiniteScroll: true, - isValueSet: this.state.isMonthSet, -- smoothScroll: !this.state.firstOpened -+ smoothScroll: !(this.state.firstOpened || props.noSmoothScroll) - }); - this.components.year.setState({ - value: props.dateObj.getUTCFullYear(), - items: props.years, - isInfiniteScroll: false, - isValueSet: this.state.isYearSet, -- smoothScroll: !this.state.firstOpened -+ smoothScroll: !(this.state.firstOpened || props.noSmoothScroll) - }); - this.state.firstOpened = false; - } else { -diff --git toolkit/content/widgets/spinner.js toolkit/content/widgets/spinner.js -index 101cb01658a0..0a30766f8d13 100644 ---- toolkit/content/widgets/spinner.js -+++ toolkit/content/widgets/spinner.js -@@ -124,8 +124,6 @@ function Spinner(props, context) { - /** - * Whenever scroll event is detected: - * - Update the index state -- * - If a smooth scroll has reached its destination, set [isScrolling] state -- * to false - * - If the value has changed, update the [value] state and call [setValue] - * - If infinite scrolling is on, reset the scrolling position if necessary - */ -@@ -138,14 +136,8 @@ function Spinner(props, context) { - - const value = itemsView[this.state.index + viewportTopOffset].value; - -- // Check if smooth scrolling has reached its destination. -- // This prevents input box jump when input box changes values. -- if (this.state.value == value && this.state.isScrolling) { -- this.state.isScrolling = false; -- } -- -- // Call setValue if value has changed, and is not smooth scrolling -- if (this.state.value != value && !this.state.isScrolling) { -+ // Call setValue if value has changed -+ if (this.state.value != value) { - this.state.value = value; - this.props.setValue(value); - } -@@ -444,10 +436,6 @@ function Spinner(props, context) { - _smoothScrollToIndex(index) { - const element = this.elements.spinner.children[index]; - if (element) { -- // Set the isScrolling flag before smooth scrolling begins -- // and remove it when it has reached the destination. -- // This prevents input box jump when input box changes values -- this.state.isScrolling = true; - element.scrollIntoView({ - behavior: "smooth", block: "start" - }); diff --git a/www/waterfox/files/patch-bug1397671 b/www/waterfox/files/patch-bug1397671 deleted file mode 100644 index 567fd3f34817..000000000000 --- a/www/waterfox/files/patch-bug1397671 +++ /dev/null @@ -1,105 +0,0 @@ -commit 553df1231272 -Author: Matt Woodrow -Date: Tue Sep 26 15:57:56 2017 +1300 - - Bug 1397671 - Don't treat SVG transformed frames as being transformed for the purposes of computing Combines3DTransformWithAncestors. r=dbaron, a=sledru - - --HG-- - extra : source : 70b150570407df427bed31965fe29cf8736beab6 ---- - layout/generic/nsFrame.cpp | 11 +++++++++-- - layout/generic/nsIFrame.h | 6 ++++++ - layout/reftests/transform-3d/preserve3d-8-ref.html | 11 +++++++++++ - layout/reftests/transform-3d/preserve3d-8.html | 17 +++++++++++++++++ - 4 files changed, 43 insertions(+), 2 deletions(-) - -diff --git layout/generic/nsFrame.cpp layout/generic/nsFrame.cpp -index 6e6f2bfa5379..02d1dafec21e 100644 ---- layout/generic/nsFrame.cpp -+++ layout/generic/nsFrame.cpp -@@ -1326,11 +1326,18 @@ nsIFrame::GetMarginRectRelativeToSelf() const - bool - nsIFrame::IsTransformed(const nsStyleDisplay* aStyleDisplay, - EffectSet* aEffectSet) const -+{ -+ return IsCSSTransformed(aStyleDisplay, aEffectSet) || -+ IsSVGTransformed(); -+} -+ -+bool -+nsIFrame::IsCSSTransformed(const nsStyleDisplay* aStyleDisplay, -+ EffectSet* aEffectSet) const - { - MOZ_ASSERT(aStyleDisplay == StyleDisplay()); - return ((mState & NS_FRAME_MAY_BE_TRANSFORMED) && - (aStyleDisplay->HasTransform(this) || -- IsSVGTransformed() || - HasAnimationOfTransform(aEffectSet))); - } - -@@ -1402,7 +1409,7 @@ nsIFrame::Combines3DTransformWithAncestors(const nsStyleDisplay* aStyleDisplay, - if (!parent || !parent->Extend3DContext()) { - return false; - } -- return IsTransformed(aStyleDisplay,aEffectSet) || -+ return IsCSSTransformed(aStyleDisplay, aEffectSet) || - BackfaceIsHidden(aStyleDisplay); - } - -diff --git layout/generic/nsIFrame.h layout/generic/nsIFrame.h -index e8fb4c71a16f..b3ca08370d34 100644 ---- layout/generic/nsIFrame.h -+++ layout/generic/nsIFrame.h -@@ -1724,6 +1724,12 @@ public: - return IsTransformed(StyleDisplay(), aEffectSet); - } - -+ /** -+ * Same as IsTransformed, except that it doesn't take SVG transforms -+ * into account. -+ */ -+ bool IsCSSTransformed(const nsStyleDisplay* aStyleDisplay, mozilla::EffectSet* aEffectSet = nullptr) const; -+ - /** - * True if this frame has any animation of transform in effect. - * -diff --git layout/reftests/transform-3d/preserve3d-8-ref.html layout/reftests/transform-3d/preserve3d-8-ref.html -new file mode 100644 -index 000000000000..afddf05d4d81 ---- /dev/null -+++ layout/reftests/transform-3d/preserve3d-8-ref.html -@@ -0,0 +1,11 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git layout/reftests/transform-3d/preserve3d-8.html layout/reftests/transform-3d/preserve3d-8.html -new file mode 100644 -index 000000000000..76e9c10c33bc ---- /dev/null -+++ layout/reftests/transform-3d/preserve3d-8.html -@@ -0,0 +1,17 @@ -+ -+ -+ -+ -+
-+
-+
-+ -+ -+ -+ -+ -+
-+
-+
-+ -+ diff --git a/www/waterfox/files/patch-bug1397686 b/www/waterfox/files/patch-bug1397686 deleted file mode 100644 index 3f1687062afc..000000000000 --- a/www/waterfox/files/patch-bug1397686 +++ /dev/null @@ -1,69 +0,0 @@ -commit 21d6d91c77f1 -Author: Dragana Damjanovic -Date: Fri Sep 22 09:09:57 2017 +0200 - - Bug 1397686 - The streams that cannot do 0RTT data need to be put in list and added to mReadyForWrite when 0RTT is done. r=hurley, a=sledru - - --HG-- - extra : source : 5cf7391a9825fda34241f6d7974940f8460804fd ---- - netwerk/protocol/http/Http2Session.cpp | 15 +++++++++++++++ - netwerk/protocol/http/Http2Session.h | 3 +++ - 2 files changed, 18 insertions(+) - -diff --git netwerk/protocol/http/Http2Session.cpp netwerk/protocol/http/Http2Session.cpp -index 42dd829dc73d..c652189a0e16 100644 ---- netwerk/protocol/http/Http2Session.cpp -+++ netwerk/protocol/http/Http2Session.cpp -@@ -2769,6 +2769,9 @@ Http2Session::ReadSegmentsAgain(nsAHttpSegmentReader *reader, - this, stream, stream->StreamID())); - FlushOutputQueue(); - SetWriteCallbacks(); -+ if (!mCannotDo0RTTStreams.Contains(stream)) { -+ mCannotDo0RTTStreams.AppendElement(stream); -+ } - // We can still send our preamble - *countRead = mOutputQueueUsed - mOutputQueueSent; - return *countRead ? NS_OK : NS_BASE_STREAM_WOULD_BLOCK; -@@ -3393,15 +3396,27 @@ Http2Session::Finish0RTT(bool aRestart, bool aAlpnChanged) - // This is the easy case - early data failed, but we're speaking h2, so - // we just need to rewind to the beginning of the preamble and try again. - mOutputQueueSent = 0; -+ -+ for (size_t i = 0; i < mCannotDo0RTTStreams.Length(); ++i) { -+ if (mCannotDo0RTTStreams[i] && VerifyStream(mCannotDo0RTTStreams[i])) { -+ TransactionHasDataToWrite(mCannotDo0RTTStreams[i]); -+ } -+ } - } - } else { - // 0RTT succeeded -+ for (size_t i = 0; i < mCannotDo0RTTStreams.Length(); ++i) { -+ if (mCannotDo0RTTStreams[i] && VerifyStream(mCannotDo0RTTStreams[i])) { -+ TransactionHasDataToWrite(mCannotDo0RTTStreams[i]); -+ } -+ } - // Make sure we look for any incoming data in repsonse to our early data. - Unused << ResumeRecv(); - } - - mAttemptingEarlyData = false; - m0RTTStreams.Clear(); -+ mCannotDo0RTTStreams.Clear(); - RealignOutputQueue(); - - return NS_OK; -diff --git netwerk/protocol/http/Http2Session.h netwerk/protocol/http/Http2Session.h -index 87c4e8b9fcb9..4fdc175ab166 100644 ---- netwerk/protocol/http/Http2Session.h -+++ netwerk/protocol/http/Http2Session.h -@@ -529,6 +529,9 @@ private: - bool mAttemptingEarlyData; - // The ID(s) of the stream(s) that we are getting 0RTT data from. - nsTArray> m0RTTStreams; -+ // The ID(s) of the stream(s) that are not able to send 0RTT data. We need to -+ // remember them put them into mReadyForWrite queue when 0RTT finishes. -+ nsTArray> mCannotDo0RTTStreams; - - bool RealJoinConnection(const nsACString &hostname, int32_t port, bool jk); - bool TestOriginFrame(const nsACString &name, int32_t port); diff --git a/www/waterfox/files/patch-bug1397795 b/www/waterfox/files/patch-bug1397795 deleted file mode 100644 index 61b6e2c82978..000000000000 --- a/www/waterfox/files/patch-bug1397795 +++ /dev/null @@ -1,61 +0,0 @@ -commit fc56d498fd83 -Author: Jonathan Watt -Date: Fri Feb 23 10:40:12 2018 +0000 - - Bug 1397795 - Fix stack overflow crash due to box-shadow. r=mstange, a=jcristau - - GetBoxShadowRectForFrame is called while we're calculating the visual - overflow bounds for a frame. So it is not valid for it to use the frame's - "current" visual overflow rect (which may be uninitialized or stale). - - MozReview-Commit-ID: J52dxIMrMg5 - - --HG-- - extra : source : d7c420c8dc2a6b28500eae0e35cd9f17a22908ec ---- - layout/base/nsLayoutUtils.cpp | 22 +++++++++++++--------- - 1 file changed, 13 insertions(+), 9 deletions(-) - -diff --git layout/base/nsLayoutUtils.cpp layout/base/nsLayoutUtils.cpp -index 53c43f6b3546..f85273fbf232 100644 ---- layout/base/nsLayoutUtils.cpp -+++ layout/base/nsLayoutUtils.cpp -@@ -8747,25 +8747,29 @@ nsLayoutUtils::GetBoxShadowRectForFrame(nsIFrame* aFrame, - return nsRect(); - } - -- bool nativeTheme; -+ nsRect inputRect(nsPoint(0, 0), aFrameSize); -+ -+ // According to the CSS spec, box-shadow should be based on the border box. -+ // However, that looks broken when the background extends outside the border -+ // box, as can be the case with native theming. To fix that we expand the -+ // area that we shadow to include the bounds of any native theme drawing. - const nsStyleDisplay* styleDisplay = aFrame->StyleDisplay(); - nsITheme::Transparency transparency; - if (aFrame->IsThemed(styleDisplay, &transparency)) { - // For opaque (rectangular) theme widgets we can take the generic - // border-box path with border-radius disabled. -- nativeTheme = transparency != nsITheme::eOpaque; -- } else { -- nativeTheme = false; -+ if (transparency != nsITheme::eOpaque) { -+ nsPresContext *presContext = aFrame->PresContext(); -+ presContext->GetTheme()-> -+ GetWidgetOverflow(presContext->DeviceContext(), aFrame, -+ styleDisplay->mAppearance, &inputRect); -+ } - } - -- nsRect frameRect = nativeTheme ? -- aFrame->GetVisualOverflowRectRelativeToSelf() : -- nsRect(nsPoint(0, 0), aFrameSize); -- - nsRect shadows; - int32_t A2D = aFrame->PresContext()->AppUnitsPerDevPixel(); - for (uint32_t i = 0; i < boxShadows->Length(); ++i) { -- nsRect tmpRect = frameRect; -+ nsRect tmpRect = inputRect; - nsCSSShadowItem* shadow = boxShadows->ShadowAt(i); - - // inset shadows are never painted outside the frame diff --git a/www/waterfox/files/patch-bug1397989 b/www/waterfox/files/patch-bug1397989 deleted file mode 100644 index 8cbd63606549..000000000000 --- a/www/waterfox/files/patch-bug1397989 +++ /dev/null @@ -1,42 +0,0 @@ -commit f7c4ef799832 -Author: Mike de Boer -Date: Tue Oct 10 19:14:01 2017 +0200 - - Bug 1397989 - Make sure to only set non-empty values as the content-type of a document in the remote browser binding. r=mconley, a=ritu - - What happens is the following: - - browser-child.js sends a statechange up to RemoteWebProgress.jsm that contains - a `documentContentType` value of `null`, along with `requestURI` and `originalRequestURI` - _after_ other state changes that did send a valid content-type. - - The content-type is used by the WebProgressListener in browser.js to toggle the - disabled state of the 'isImage' broadcaster. - - The 'isImage' broadcaster is used by the 'cmd_find' and 'cmd_findAgain' commands to - determine whether they should be enabled. In this case: not. - The fix here is to _not_ set the documentContentType in the browser binding when - it's `null`. - - MozReview-Commit-ID: IELoCrnOH0j - - --HG-- - extra : source : 4c86b1f93b8482ea3097a4edb51bb8c0e8dc67fc ---- - toolkit/modules/RemoteWebProgress.jsm | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git toolkit/modules/RemoteWebProgress.jsm toolkit/modules/RemoteWebProgress.jsm -index 04eb37d580f5..05e3dabda941 100644 ---- toolkit/modules/RemoteWebProgress.jsm -+++ toolkit/modules/RemoteWebProgress.jsm -@@ -222,7 +222,11 @@ RemoteWebProgressManager.prototype = { - - if (isTopLevel) { - this._browser._contentWindow = objects.contentWindow; -- this._browser._documentContentType = json.documentContentType; -+ // Setting a content-type back to `null` is quite nonsensical for the -+ // frontend, especially since we're not expecting it. -+ if (json.documentContentType !== null) { -+ this._browser._documentContentType = json.documentContentType; -+ } - if (typeof json.inLoadURI != "undefined") { - this._browser.inLoadURI = json.inLoadURI; - } diff --git a/www/waterfox/files/patch-bug1398021 b/www/waterfox/files/patch-bug1398021 deleted file mode 100644 index 0f31bc6df559..000000000000 --- a/www/waterfox/files/patch-bug1398021 +++ /dev/null @@ -1,2737 +0,0 @@ -commit 909ebdebd850 -Author: Ryan VanderMeulen -Date: Tue Sep 12 09:00:37 2017 -0400 - - Bug 1398021 - Update lz4 to version 1.8.0. r=froydnj ---- - mfbt/Compression.cpp | 7 +- - mfbt/lz4.c | 1593 ++++++++++++++++++++++++++++++-------------------- - mfbt/lz4.h | 531 +++++++++++------ - 3 files changed, 1319 insertions(+), 812 deletions(-) - -diff --git mfbt/Compression.cpp mfbt/Compression.cpp -index 3f5fff53c425..ed0bb4ef72c7 100644 ---- mfbt/Compression.cpp -+++ mfbt/Compression.cpp -@@ -36,7 +36,8 @@ LZ4::compress(const char* aSource, size_t aInputSize, char* aDest) - { - CheckedInt inputSizeChecked = aInputSize; - MOZ_ASSERT(inputSizeChecked.isValid()); -- return LZ4_compress(aSource, aDest, inputSizeChecked.value()); -+ return LZ4_compress_default(aSource, aDest, inputSizeChecked.value(), -+ LZ4_compressBound(inputSizeChecked.value())); - } - - size_t -@@ -47,8 +48,8 @@ LZ4::compressLimitedOutput(const char* aSource, size_t aInputSize, char* aDest, - MOZ_ASSERT(inputSizeChecked.isValid()); - CheckedInt maxOutputSizeChecked = aMaxOutputSize; - MOZ_ASSERT(maxOutputSizeChecked.isValid()); -- return LZ4_compress_limitedOutput(aSource, aDest, inputSizeChecked.value(), -- maxOutputSizeChecked.value()); -+ return LZ4_compress_default(aSource, aDest, inputSizeChecked.value(), -+ maxOutputSizeChecked.value()); - } - - bool -diff --git mfbt/lz4.c mfbt/lz4.c -index c416fe815a42..5752b4d17b0e 100644 ---- mfbt/lz4.c -+++ mfbt/lz4.c -@@ -1,6 +1,7 @@ - /* - LZ4 - Fast LZ compression algorithm -- Copyright (C) 2011-2014, Yann Collet. -+ Copyright (C) 2011-2017, Yann Collet. -+ - BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) - - Redistribution and use in source and binary forms, with or without -@@ -27,118 +28,96 @@ - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - You can contact the author at : -- - LZ4 source repository : http://code.google.com/p/lz4/ -- - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c -+ - LZ4 homepage : http://www.lz4.org -+ - LZ4 source repository : https://github.com/lz4/lz4 - */ - --/************************************** -- Tuning parameters -+ -+/*-************************************ -+* Tuning parameters - **************************************/ - /* -- * HEAPMODE : -+ * LZ4_HEAPMODE : - * Select how default compression functions will allocate memory for their hash table, -- * in memory stack (0:default, fastest), or in memory heap (1:requires memory allocation (malloc)). -+ * in memory stack (0:default, fastest), or in memory heap (1:requires malloc()). - */ --#define HEAPMODE 0 -- -- --/************************************** -- CPU Feature Detection --**************************************/ --/* 32 or 64 bits ? */ --#if (defined(__x86_64__) || defined(_M_X64) || defined(_WIN64) \ -- || defined(__powerpc64__) || defined(__powerpc64le__) \ -- || defined(__ppc64__) || defined(__ppc64le__) \ -- || defined(__PPC64__) || defined(__PPC64LE__) \ -- || defined(__ia64) || defined(__itanium__) || defined(_M_IA64) \ -- || (defined(__mips64) && defined(_ABI64))) /* Detects 64 bits mode */ --# define LZ4_ARCH64 1 --#else --# define LZ4_ARCH64 0 -+#ifndef LZ4_HEAPMODE -+# define LZ4_HEAPMODE 0 - #endif - - /* -- * Little Endian or Big Endian ? -- * Overwrite the #define below if you know your architecture endianess -+ * ACCELERATION_DEFAULT : -+ * Select "acceleration" for LZ4_compress_fast() when parameter value <= 0 - */ --#include /* Apparently required to detect endianess */ --#if defined (__GLIBC__) --# include --# if (__BYTE_ORDER == __BIG_ENDIAN) --# define LZ4_BIG_ENDIAN 1 -+#define ACCELERATION_DEFAULT 1 -+ -+ -+/*-************************************ -+* CPU Feature Detection -+**************************************/ -+/* LZ4_FORCE_MEMORY_ACCESS -+ * By default, access to unaligned memory is controlled by `memcpy()`, which is safe and portable. -+ * Unfortunately, on some target/compiler combinations, the generated assembly is sub-optimal. -+ * The below switch allow to select different access method for improved performance. -+ * Method 0 (default) : use `memcpy()`. Safe and portable. -+ * Method 1 : `__packed` statement. It depends on compiler extension (ie, not portable). -+ * This method is safe if your compiler supports it, and *generally* as fast or faster than `memcpy`. -+ * Method 2 : direct access. This method is portable but violate C standard. -+ * It can generate buggy code on targets which assembly generation depends on alignment. -+ * But in some circumstances, it's the only known way to get the most performance (ie GCC + ARMv6) -+ * See https://fastcompression.blogspot.fr/2015/08/accessing-unaligned-memory.html for details. -+ * Prefer these methods in priority order (0 > 1 > 2) -+ */ -+#ifndef LZ4_FORCE_MEMORY_ACCESS /* can be defined externally */ -+# if defined(__GNUC__) && ( defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) ) -+# define LZ4_FORCE_MEMORY_ACCESS 2 -+# elif defined(__INTEL_COMPILER) || defined(__GNUC__) -+# define LZ4_FORCE_MEMORY_ACCESS 1 - # endif --#elif (defined(__BIG_ENDIAN__) || defined(__BIG_ENDIAN) || defined(_BIG_ENDIAN)) && !(defined(__LITTLE_ENDIAN__) || defined(__LITTLE_ENDIAN) || defined(_LITTLE_ENDIAN)) --# define LZ4_BIG_ENDIAN 1 --#elif defined(__sparc) || defined(__sparc__) \ -- || defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) \ -- || defined(__hpux) || defined(__hppa) \ -- || defined(_MIPSEB) || defined(__s390__) --# define LZ4_BIG_ENDIAN 1 --#else --/* Little Endian assumed. PDP Endian and other very rare endian format are unsupported. */ - #endif - - /* -- * Unaligned memory access is automatically enabled for "common" CPU, such as x86. -- * For others CPU, such as ARM, the compiler may be more cautious, inserting unnecessary extra code to ensure aligned access property -- * If you know your target CPU supports unaligned memory access, you want to force this option manually to improve performance -+ * LZ4_FORCE_SW_BITCOUNT -+ * Define this parameter if your target system or compiler does not support hardware bit count - */ --#if defined(__ARM_FEATURE_UNALIGNED) --# define LZ4_FORCE_UNALIGNED_ACCESS 1 --#endif -- --/* Define this parameter if your target system or compiler does not support hardware bit count */ - #if defined(_MSC_VER) && defined(_WIN32_WCE) /* Visual Studio for Windows CE does not support Hardware bit count */ - # define LZ4_FORCE_SW_BITCOUNT - #endif - --/* -- * BIG_ENDIAN_NATIVE_BUT_INCOMPATIBLE : -- * This option may provide a small boost to performance for some big endian cpu, although probably modest. -- * You may set this option to 1 if data will remain within closed environment. -- * This option is useless on Little_Endian CPU (such as x86) -- */ - --/* #define BIG_ENDIAN_NATIVE_BUT_INCOMPATIBLE 1 */ -+/*-************************************ -+* Dependency -+**************************************/ -+#include "lz4.h" -+/* see also "memory routines" below */ - - --/************************************** -- Compiler Options -+/*-************************************ -+* Compiler Options - **************************************/ --#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */ --/* "restrict" is a known keyword */ --#else --# define restrict /* Disable restrict */ --#endif -- - #ifdef _MSC_VER /* Visual Studio */ --# define FORCE_INLINE static __forceinline --# include /* For Visual 2005 */ --# if LZ4_ARCH64 /* 64-bits */ --# pragma intrinsic(_BitScanForward64) /* For Visual 2005 */ --# pragma intrinsic(_BitScanReverse64) /* For Visual 2005 */ --# else /* 32-bits */ --# pragma intrinsic(_BitScanForward) /* For Visual 2005 */ --# pragma intrinsic(_BitScanReverse) /* For Visual 2005 */ --# endif -+# include - # pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ --#else --# ifdef __GNUC__ --# define FORCE_INLINE static inline __attribute__((always_inline)) --# else --# define FORCE_INLINE static inline --# endif --#endif -- --#ifdef _MSC_VER /* Visual Studio */ --# define lz4_bswap16(x) _byteswap_ushort(x) --#else --# define lz4_bswap16(x) ((unsigned short int) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8))) --#endif -- --#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) -+# pragma warning(disable : 4293) /* disable: C4293: too large shift (32-bits) */ -+#endif /* _MSC_VER */ - --#if (GCC_VERSION >= 302) || (__INTEL_COMPILER >= 800) || defined(__clang__) -+#ifndef FORCE_INLINE -+# ifdef _MSC_VER /* Visual Studio */ -+# define FORCE_INLINE static __forceinline -+# else -+# if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */ -+# ifdef __GNUC__ -+# define FORCE_INLINE static inline __attribute__((always_inline)) -+# else -+# define FORCE_INLINE static inline -+# endif -+# else -+# define FORCE_INLINE static -+# endif /* __STDC_VERSION__ */ -+# endif /* _MSC_VER */ -+#endif /* FORCE_INLINE */ -+ -+#if (defined(__GNUC__) && (__GNUC__ >= 3)) || (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 800)) || defined(__clang__) - # define expect(expr,value) (__builtin_expect ((expr),(value)) ) - #else - # define expect(expr,value) (expr) -@@ -148,8 +127,8 @@ - #define unlikely(expr) expect((expr) != 0, 0) - - --/************************************** -- Memory routines -+/*-************************************ -+* Memory routines - **************************************/ - #include /* malloc, calloc, free */ - #define ALLOCATOR(n,s) calloc(n,s) -@@ -158,84 +137,146 @@ - #define MEM_INIT memset - - --/************************************** -- Includes -+/*-************************************ -+* Basic Types - **************************************/ --#include "lz4.h" -- -- --/************************************** -- Basic Types --**************************************/ --#if defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */ -+#if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) - # include - typedef uint8_t BYTE; - typedef uint16_t U16; - typedef uint32_t U32; - typedef int32_t S32; - typedef uint64_t U64; -+ typedef uintptr_t uptrval; - #else - typedef unsigned char BYTE; - typedef unsigned short U16; - typedef unsigned int U32; - typedef signed int S32; - typedef unsigned long long U64; -+ typedef size_t uptrval; /* generally true, except OpenVMS-64 */ - #endif - --#if defined(__GNUC__) && !defined(LZ4_FORCE_UNALIGNED_ACCESS) --# define _PACKED __attribute__ ((packed)) -+#if defined(__x86_64__) -+ typedef U64 reg_t; /* 64-bits in x32 mode */ - #else --# define _PACKED -+ typedef size_t reg_t; /* 32-bits in x32 mode */ - #endif - --#if !defined(LZ4_FORCE_UNALIGNED_ACCESS) && !defined(__GNUC__) --# if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) --# pragma pack(1) --# else --# pragma pack(push, 1) --# endif --#endif -+/*-************************************ -+* Reading and writing into memory -+**************************************/ -+static unsigned LZ4_isLittleEndian(void) -+{ -+ const union { U32 u; BYTE c[4]; } one = { 1 }; /* don't use static : performance detrimental */ -+ return one.c[0]; -+} - --typedef struct { U16 v; } _PACKED U16_S; --typedef struct { U32 v; } _PACKED U32_S; --typedef struct { U64 v; } _PACKED U64_S; --typedef struct {size_t v;} _PACKED size_t_S; - --#if !defined(LZ4_FORCE_UNALIGNED_ACCESS) && !defined(__GNUC__) --# if defined(__SUNPRO_C) || defined(__SUNPRO_CC) --# pragma pack(0) --# else --# pragma pack(pop) --# endif --#endif -+#if defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==2) -+/* lie to the compiler about data alignment; use with caution */ - --#define A16(x) (((U16_S *)(x))->v) --#define A32(x) (((U32_S *)(x))->v) --#define A64(x) (((U64_S *)(x))->v) --#define AARCH(x) (((size_t_S *)(x))->v) -+static U16 LZ4_read16(const void* memPtr) { return *(const U16*) memPtr; } -+static U32 LZ4_read32(const void* memPtr) { return *(const U32*) memPtr; } -+static reg_t LZ4_read_ARCH(const void* memPtr) { return *(const reg_t*) memPtr; } - -+static void LZ4_write16(void* memPtr, U16 value) { *(U16*)memPtr = value; } -+static void LZ4_write32(void* memPtr, U32 value) { *(U32*)memPtr = value; } - --/************************************** -- Constants --**************************************/ --#define LZ4_HASHLOG (LZ4_MEMORY_USAGE-2) --#define HASHTABLESIZE (1 << LZ4_MEMORY_USAGE) --#define HASH_SIZE_U32 (1 << LZ4_HASHLOG) -+#elif defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==1) -+ -+/* __pack instructions are safer, but compiler specific, hence potentially problematic for some compilers */ -+/* currently only defined for gcc and icc */ -+typedef union { U16 u16; U32 u32; reg_t uArch; } __attribute__((packed)) unalign; -+ -+static U16 LZ4_read16(const void* ptr) { return ((const unalign*)ptr)->u16; } -+static U32 LZ4_read32(const void* ptr) { return ((const unalign*)ptr)->u32; } -+static reg_t LZ4_read_ARCH(const void* ptr) { return ((const unalign*)ptr)->uArch; } -+ -+static void LZ4_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; } -+static void LZ4_write32(void* memPtr, U32 value) { ((unalign*)memPtr)->u32 = value; } -+ -+#else /* safe and portable access through memcpy() */ - -+static U16 LZ4_read16(const void* memPtr) -+{ -+ U16 val; memcpy(&val, memPtr, sizeof(val)); return val; -+} -+ -+static U32 LZ4_read32(const void* memPtr) -+{ -+ U32 val; memcpy(&val, memPtr, sizeof(val)); return val; -+} -+ -+static reg_t LZ4_read_ARCH(const void* memPtr) -+{ -+ reg_t val; memcpy(&val, memPtr, sizeof(val)); return val; -+} -+ -+static void LZ4_write16(void* memPtr, U16 value) -+{ -+ memcpy(memPtr, &value, sizeof(value)); -+} -+ -+static void LZ4_write32(void* memPtr, U32 value) -+{ -+ memcpy(memPtr, &value, sizeof(value)); -+} -+ -+#endif /* LZ4_FORCE_MEMORY_ACCESS */ -+ -+ -+static U16 LZ4_readLE16(const void* memPtr) -+{ -+ if (LZ4_isLittleEndian()) { -+ return LZ4_read16(memPtr); -+ } else { -+ const BYTE* p = (const BYTE*)memPtr; -+ return (U16)((U16)p[0] + (p[1]<<8)); -+ } -+} -+ -+static void LZ4_writeLE16(void* memPtr, U16 value) -+{ -+ if (LZ4_isLittleEndian()) { -+ LZ4_write16(memPtr, value); -+ } else { -+ BYTE* p = (BYTE*)memPtr; -+ p[0] = (BYTE) value; -+ p[1] = (BYTE)(value>>8); -+ } -+} -+ -+static void LZ4_copy8(void* dst, const void* src) -+{ -+ memcpy(dst,src,8); -+} -+ -+/* customized variant of memcpy, which can overwrite up to 8 bytes beyond dstEnd */ -+static void LZ4_wildCopy(void* dstPtr, const void* srcPtr, void* dstEnd) -+{ -+ BYTE* d = (BYTE*)dstPtr; -+ const BYTE* s = (const BYTE*)srcPtr; -+ BYTE* const e = (BYTE*)dstEnd; -+ -+ do { LZ4_copy8(d,s); d+=8; s+=8; } while (d=2) -+# include -+# define DEBUGLOG(l, ...) { \ -+ if (l<=LZ4_DEBUG) { \ -+ fprintf(stderr, __FILE__ ": "); \ -+ fprintf(stderr, __VA_ARGS__); \ -+ fprintf(stderr, " \n"); \ -+ } } -+#else -+# define DEBUGLOG(l, ...) {} /* disabled */ -+#endif - --typedef enum { notLimited = 0, limitedOutput = 1 } limitedOutput_directive; --typedef enum { byPtr, byU32, byU16 } tableType_t; - --typedef enum { noDict = 0, withPrefix64k, usingExtDict } dict_directive; --typedef enum { noDictIssue = 0, dictSmall } dictIssue_directive; -+/*-************************************ -+* Common functions -+**************************************/ -+static unsigned LZ4_NbCommonBytes (register reg_t val) -+{ -+ if (LZ4_isLittleEndian()) { -+ if (sizeof(val)==8) { -+# if defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT) -+ unsigned long r = 0; -+ _BitScanForward64( &r, (U64)val ); -+ return (int)(r>>3); -+# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) -+ return (__builtin_ctzll((U64)val) >> 3); -+# else -+ static const int DeBruijnBytePos[64] = { 0, 0, 0, 0, 0, 1, 1, 2, 0, 3, 1, 3, 1, 4, 2, 7, 0, 2, 3, 6, 1, 5, 3, 5, 1, 3, 4, 4, 2, 5, 6, 7, 7, 0, 1, 2, 3, 3, 4, 6, 2, 6, 5, 5, 3, 4, 5, 6, 7, 1, 2, 4, 6, 4, 4, 5, 7, 2, 6, 5, 7, 6, 7, 7 }; -+ return DeBruijnBytePos[((U64)((val & -(long long)val) * 0x0218A392CDABBD3FULL)) >> 58]; -+# endif -+ } else /* 32 bits */ { -+# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT) -+ unsigned long r; -+ _BitScanForward( &r, (U32)val ); -+ return (int)(r>>3); -+# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) -+ return (__builtin_ctz((U32)val) >> 3); -+# else -+ static const int DeBruijnBytePos[32] = { 0, 0, 3, 0, 3, 1, 3, 0, 3, 2, 2, 1, 3, 2, 0, 1, 3, 3, 1, 2, 2, 2, 2, 0, 3, 1, 2, 0, 1, 0, 1, 1 }; -+ return DeBruijnBytePos[((U32)((val & -(S32)val) * 0x077CB531U)) >> 27]; -+# endif -+ } -+ } else /* Big Endian CPU */ { -+ if (sizeof(val)==8) { -+# if defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT) -+ unsigned long r = 0; -+ _BitScanReverse64( &r, val ); -+ return (unsigned)(r>>3); -+# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) -+ return (__builtin_clzll((U64)val) >> 3); -+# else -+ unsigned r; -+ if (!(val>>32)) { r=4; } else { r=0; val>>=32; } -+ if (!(val>>16)) { r+=2; val>>=8; } else { val>>=24; } -+ r += (!val); -+ return r; -+# endif -+ } else /* 32 bits */ { -+# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT) -+ unsigned long r = 0; -+ _BitScanReverse( &r, (unsigned long)val ); -+ return (unsigned)(r>>3); -+# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) -+ return (__builtin_clz((U32)val) >> 3); -+# else -+ unsigned r; -+ if (!(val>>16)) { r=2; val>>=8; } else { r=0; val>>=24; } -+ r += (!val); -+ return r; -+# endif -+ } -+ } -+} - --typedef enum { endOnOutputSize = 0, endOnInputSize = 1 } endCondition_directive; --typedef enum { full = 0, partial = 1 } earlyEnd_directive; -+#define STEPSIZE sizeof(reg_t) -+static unsigned LZ4_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* pInLimit) -+{ -+ const BYTE* const pStart = pIn; - -+ while (likely(pIn=e; */ --#else --# define LZ4_WILDCOPY(d,s,e) { if (likely(e-d <= 8)) LZ4_COPY8(d,s) else do { LZ4_COPY8(d,s) } while (d compression run slower on incompressible data */ - - --/**************************** -- Private local functions --****************************/ --#if LZ4_ARCH64 -+/*-************************************ -+* Local Structures and types -+**************************************/ -+typedef enum { notLimited = 0, limitedOutput = 1 } limitedOutput_directive; -+typedef enum { byPtr, byU32, byU16 } tableType_t; - --int LZ4_NbCommonBytes (register U64 val) --{ --# if defined(LZ4_BIG_ENDIAN) --# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT) -- unsigned long r = 0; -- _BitScanReverse64( &r, val ); -- return (int)(r>>3); --# elif defined(__GNUC__) && (GCC_VERSION >= 304) && !defined(LZ4_FORCE_SW_BITCOUNT) -- return (__builtin_clzll(val) >> 3); --# else -- int r; -- if (!(val>>32)) { r=4; } else { r=0; val>>=32; } -- if (!(val>>16)) { r+=2; val>>=8; } else { val>>=24; } -- r += (!val); -- return r; --# endif --# else --# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT) -- unsigned long r = 0; -- _BitScanForward64( &r, val ); -- return (int)(r>>3); --# elif defined(__GNUC__) && (GCC_VERSION >= 304) && !defined(LZ4_FORCE_SW_BITCOUNT) -- return (__builtin_ctzll(val) >> 3); --# else -- static const int DeBruijnBytePos[64] = { 0, 0, 0, 0, 0, 1, 1, 2, 0, 3, 1, 3, 1, 4, 2, 7, 0, 2, 3, 6, 1, 5, 3, 5, 1, 3, 4, 4, 2, 5, 6, 7, 7, 0, 1, 2, 3, 3, 4, 6, 2, 6, 5, 5, 3, 4, 5, 6, 7, 1, 2, 4, 6, 4, 4, 5, 7, 2, 6, 5, 7, 6, 7, 7 }; -- return DeBruijnBytePos[((U64)((val & -(long long)val) * 0x0218A392CDABBD3FULL)) >> 58]; --# endif --# endif --} -+typedef enum { noDict = 0, withPrefix64k, usingExtDict } dict_directive; -+typedef enum { noDictIssue = 0, dictSmall } dictIssue_directive; - --#else -+typedef enum { endOnOutputSize = 0, endOnInputSize = 1 } endCondition_directive; -+typedef enum { full = 0, partial = 1 } earlyEnd_directive; - --int LZ4_NbCommonBytes (register U32 val) --{ --# if defined(LZ4_BIG_ENDIAN) --# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT) -- unsigned long r = 0; -- _BitScanReverse( &r, val ); -- return (int)(r>>3); --# elif defined(__GNUC__) && (GCC_VERSION >= 304) && !defined(LZ4_FORCE_SW_BITCOUNT) -- return (__builtin_clz(val) >> 3); --# else -- int r; -- if (!(val>>16)) { r=2; val>>=8; } else { r=0; val>>=24; } -- r += (!val); -- return r; --# endif --# else --# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT) -- unsigned long r; -- _BitScanForward( &r, val ); -- return (int)(r>>3); --# elif defined(__GNUC__) && (GCC_VERSION >= 304) && !defined(LZ4_FORCE_SW_BITCOUNT) -- return (__builtin_ctz(val) >> 3); --# else -- static const int DeBruijnBytePos[32] = { 0, 0, 3, 0, 3, 1, 3, 0, 3, 2, 2, 1, 3, 2, 0, 1, 3, 3, 1, 2, 2, 2, 2, 0, 3, 1, 2, 0, 1, 0, 1, 1 }; -- return DeBruijnBytePos[((U32)((val & -(S32)val) * 0x077CB531U)) >> 27]; --# endif --# endif --} - --#endif -+/*-************************************ -+* Local Utils -+**************************************/ -+int LZ4_versionNumber (void) { return LZ4_VERSION_NUMBER; } -+const char* LZ4_versionString(void) { return LZ4_VERSION_STRING; } -+int LZ4_compressBound(int isize) { return LZ4_COMPRESSBOUND(isize); } -+int LZ4_sizeofState() { return LZ4_STREAMSIZE; } - - --/******************************** -- Compression functions -+/*-****************************** -+* Compression functions - ********************************/ --int LZ4_compressBound(int isize) { return LZ4_COMPRESSBOUND(isize); } -- --static int LZ4_hashSequence(U32 sequence, tableType_t tableType) -+static U32 LZ4_hash4(U32 sequence, tableType_t const tableType) - { - if (tableType == byU16) -- return (((sequence) * 2654435761U) >> ((MINMATCH*8)-(LZ4_HASHLOG+1))); -+ return ((sequence * 2654435761U) >> ((MINMATCH*8)-(LZ4_HASHLOG+1))); - else -- return (((sequence) * 2654435761U) >> ((MINMATCH*8)-LZ4_HASHLOG)); -+ return ((sequence * 2654435761U) >> ((MINMATCH*8)-LZ4_HASHLOG)); - } - --static int LZ4_hashPosition(const BYTE* p, tableType_t tableType) { return LZ4_hashSequence(A32(p), tableType); } -+static U32 LZ4_hash5(U64 sequence, tableType_t const tableType) -+{ -+ static const U64 prime5bytes = 889523592379ULL; -+ static const U64 prime8bytes = 11400714785074694791ULL; -+ const U32 hashLog = (tableType == byU16) ? LZ4_HASHLOG+1 : LZ4_HASHLOG; -+ if (LZ4_isLittleEndian()) -+ return (U32)(((sequence << 24) * prime5bytes) >> (64 - hashLog)); -+ else -+ return (U32)(((sequence >> 24) * prime8bytes) >> (64 - hashLog)); -+} -+ -+FORCE_INLINE U32 LZ4_hashPosition(const void* const p, tableType_t const tableType) -+{ -+ if ((sizeof(reg_t)==8) && (tableType != byU16)) return LZ4_hash5(LZ4_read_ARCH(p), tableType); -+ return LZ4_hash4(LZ4_read32(p), tableType); -+} - --static void LZ4_putPositionOnHash(const BYTE* p, U32 h, void* tableBase, tableType_t tableType, const BYTE* srcBase) -+static void LZ4_putPositionOnHash(const BYTE* p, U32 h, void* tableBase, tableType_t const tableType, const BYTE* srcBase) - { - switch (tableType) - { -- case byPtr: { const BYTE** hashTable = (const BYTE**) tableBase; hashTable[h] = p; break; } -- case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = (U32)(p-srcBase); break; } -- case byU16: { U16* hashTable = (U16*) tableBase; hashTable[h] = (U16)(p-srcBase); break; } -+ case byPtr: { const BYTE** hashTable = (const BYTE**)tableBase; hashTable[h] = p; return; } -+ case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = (U32)(p-srcBase); return; } -+ case byU16: { U16* hashTable = (U16*) tableBase; hashTable[h] = (U16)(p-srcBase); return; } - } - } - --static void LZ4_putPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase) -+FORCE_INLINE void LZ4_putPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase) - { -- U32 h = LZ4_hashPosition(p, tableType); -+ U32 const h = LZ4_hashPosition(p, tableType); - LZ4_putPositionOnHash(p, h, tableBase, tableType, srcBase); - } - - static const BYTE* LZ4_getPositionOnHash(U32 h, void* tableBase, tableType_t tableType, const BYTE* srcBase) - { - if (tableType == byPtr) { const BYTE** hashTable = (const BYTE**) tableBase; return hashTable[h]; } -- if (tableType == byU32) { U32* hashTable = (U32*) tableBase; return hashTable[h] + srcBase; } -- { U16* hashTable = (U16*) tableBase; return hashTable[h] + srcBase; } /* default, to ensure a return */ -+ if (tableType == byU32) { const U32* const hashTable = (U32*) tableBase; return hashTable[h] + srcBase; } -+ { const U16* const hashTable = (U16*) tableBase; return hashTable[h] + srcBase; } /* default, to ensure a return */ - } - --static const BYTE* LZ4_getPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase) -+FORCE_INLINE const BYTE* LZ4_getPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase) - { -- U32 h = LZ4_hashPosition(p, tableType); -+ U32 const h = LZ4_hashPosition(p, tableType); - return LZ4_getPositionOnHash(h, tableBase, tableType, srcBase); - } - --static unsigned LZ4_count(const BYTE* pIn, const BYTE* pRef, const BYTE* pInLimit) --{ -- const BYTE* const pStart = pIn; -- -- while (likely(pIndictSize; -- const BYTE* const dictionary = dictPtr->dictionary; -- const BYTE* const dictEnd = dictionary + dictPtr->dictSize; -- const size_t dictDelta = dictEnd - (const BYTE*)source; -+ const BYTE* const lowRefLimit = ip - cctx->dictSize; -+ const BYTE* const dictionary = cctx->dictionary; -+ const BYTE* const dictEnd = dictionary + cctx->dictSize; -+ const ptrdiff_t dictDelta = dictEnd - (const BYTE*)source; - const BYTE* anchor = (const BYTE*) source; - const BYTE* const iend = ip + inputSize; - const BYTE* const mflimit = iend - MFLIMIT; -@@ -455,12 +501,10 @@ static int LZ4_compress_generic( - BYTE* op = (BYTE*) dest; - BYTE* const olimit = op + maxOutputSize; - -- const int skipStrength = SKIPSTRENGTH; - U32 forwardH; -- size_t refDelta=0; - - /* Init conditions */ -- if ((U32)inputSize > (U32)LZ4_MAX_INPUT_SIZE) return 0; /* Unsupported input size, too large (or negative) */ -+ if ((U32)inputSize > (U32)LZ4_MAX_INPUT_SIZE) return 0; /* Unsupported inputSize, too large (or negative) */ - switch(dict) - { - case noDict: -@@ -469,125 +513,118 @@ static int LZ4_compress_generic( - lowLimit = (const BYTE*)source; - break; - case withPrefix64k: -- base = (const BYTE*)source - dictPtr->currentOffset; -- lowLimit = (const BYTE*)source - dictPtr->dictSize; -+ base = (const BYTE*)source - cctx->currentOffset; -+ lowLimit = (const BYTE*)source - cctx->dictSize; - break; - case usingExtDict: -- base = (const BYTE*)source - dictPtr->currentOffset; -+ base = (const BYTE*)source - cctx->currentOffset; - lowLimit = (const BYTE*)source; - break; - } -- if ((tableType == byU16) && (inputSize>=(int)LZ4_64KLIMIT)) return 0; /* Size too large (not within 64K limit) */ -- if (inputSize=LZ4_64Klimit)) return 0; /* Size too large (not within 64K limit) */ -+ if (inputSizehashTable, tableType, base); - ip++; forwardH = LZ4_hashPosition(ip, tableType); - - /* Main Loop */ -- for ( ; ; ) -- { -- const BYTE* ref; -+ for ( ; ; ) { -+ ptrdiff_t refDelta = 0; -+ const BYTE* match; - BYTE* token; -- { -- const BYTE* forwardIp = ip; -- unsigned step=1; -- unsigned searchMatchNb = (1U << skipStrength); - -- /* Find a match */ -+ /* Find a match */ -+ { const BYTE* forwardIp = ip; -+ unsigned step = 1; -+ unsigned searchMatchNb = acceleration << LZ4_skipTrigger; - do { -- U32 h = forwardH; -+ U32 const h = forwardH; - ip = forwardIp; - forwardIp += step; -- step = searchMatchNb++ >> skipStrength; -- //if (step>8) step=8; // required for valid forwardIp ; slows down uncompressible data a bit -+ step = (searchMatchNb++ >> LZ4_skipTrigger); - - if (unlikely(forwardIp > mflimit)) goto _last_literals; - -- ref = LZ4_getPositionOnHash(h, ctx, tableType, base); -- if (dict==usingExtDict) -- { -- if (ref<(const BYTE*)source) -- { -+ match = LZ4_getPositionOnHash(h, cctx->hashTable, tableType, base); -+ if (dict==usingExtDict) { -+ if (match < (const BYTE*)source) { - refDelta = dictDelta; - lowLimit = dictionary; -- } -- else -- { -+ } else { - refDelta = 0; - lowLimit = (const BYTE*)source; -- } -- } -+ } } - forwardH = LZ4_hashPosition(forwardIp, tableType); -- LZ4_putPositionOnHash(ip, h, ctx, tableType, base); -+ LZ4_putPositionOnHash(ip, h, cctx->hashTable, tableType, base); - -- } while ( ((dictIssue==dictSmall) ? (ref < lowRefLimit) : 0) -- || ((tableType==byU16) ? 0 : (ref + MAX_DISTANCE < ip)) -- || (A32(ref+refDelta) != A32(ip)) ); -+ } while ( ((dictIssue==dictSmall) ? (match < lowRefLimit) : 0) -+ || ((tableType==byU16) ? 0 : (match + MAX_DISTANCE < ip)) -+ || (LZ4_read32(match+refDelta) != LZ4_read32(ip)) ); - } - - /* Catch up */ -- while ((ip>anchor) && (ref+refDelta > lowLimit) && (unlikely(ip[-1]==ref[refDelta-1]))) { ip--; ref--; } -+ while (((ip>anchor) & (match+refDelta > lowLimit)) && (unlikely(ip[-1]==match[refDelta-1]))) { ip--; match--; } - -- { -- /* Encode Literal length */ -- unsigned litLength = (unsigned)(ip - anchor); -+ /* Encode Literals */ -+ { unsigned const litLength = (unsigned)(ip - anchor); - token = op++; -- if ((outputLimited) && (unlikely(op + litLength + (2 + 1 + LASTLITERALS) + (litLength/255) > olimit))) -- return 0; /* Check output limit */ -- if (litLength>=RUN_MASK) -- { -+ if ((outputLimited) && /* Check output buffer overflow */ -+ (unlikely(op + litLength + (2 + 1 + LASTLITERALS) + (litLength/255) > olimit))) -+ return 0; -+ if (litLength >= RUN_MASK) { - int len = (int)litLength-RUN_MASK; -- *token=(RUN_MASK<= 255 ; len-=255) *op++ = 255; - *op++ = (BYTE)len; - } - else *token = (BYTE)(litLength< matchlimit) limit = matchlimit; -- matchLength = LZ4_count(ip+MINMATCH, ref+MINMATCH, limit); -- ip += MINMATCH + matchLength; -- if (ip==limit) -- { -- unsigned more = LZ4_count(ip, (const BYTE*)source, matchlimit); -- matchLength += more; -+ matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, limit); -+ ip += MINMATCH + matchCode; -+ if (ip==limit) { -+ unsigned const more = LZ4_count(ip, (const BYTE*)source, matchlimit); -+ matchCode += more; - ip += more; - } -- } -- else -- { -- matchLength = LZ4_count(ip+MINMATCH, ref+MINMATCH, matchlimit); -- ip += MINMATCH + matchLength; -+ } else { -+ matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, matchlimit); -+ ip += MINMATCH + matchCode; - } - -- if (matchLength>=ML_MASK) -- { -- if ((outputLimited) && (unlikely(op + (1 + LASTLITERALS) + (matchLength>>8) > olimit))) -- return 0; /* Check output limit */ -+ if ( outputLimited && /* Check output buffer overflow */ -+ (unlikely(op + (1 + LASTLITERALS) + (matchCode>>8) > olimit)) ) -+ return 0; -+ if (matchCode >= ML_MASK) { - *token += ML_MASK; -- matchLength -= ML_MASK; -- for (; matchLength >= 510 ; matchLength-=510) { *op++ = 255; *op++ = 255; } -- if (matchLength >= 255) { matchLength-=255; *op++ = 255; } -- *op++ = (BYTE)matchLength; -- } -- else *token += (BYTE)(matchLength); -+ matchCode -= ML_MASK; -+ LZ4_write32(op, 0xFFFFFFFF); -+ while (matchCode >= 4*255) { -+ op+=4; -+ LZ4_write32(op, 0xFFFFFFFF); -+ matchCode -= 4*255; -+ } -+ op += matchCode / 255; -+ *op++ = (BYTE)(matchCode % 255); -+ } else -+ *token += (BYTE)(matchCode); - } - - anchor = ip; -@@ -596,27 +633,22 @@ _next_match: - if (ip > mflimit) break; - - /* Fill table */ -- LZ4_putPosition(ip-2, ctx, tableType, base); -+ LZ4_putPosition(ip-2, cctx->hashTable, tableType, base); - - /* Test next position */ -- ref = LZ4_getPosition(ip, ctx, tableType, base); -- if (dict==usingExtDict) -- { -- if (ref<(const BYTE*)source) -- { -+ match = LZ4_getPosition(ip, cctx->hashTable, tableType, base); -+ if (dict==usingExtDict) { -+ if (match < (const BYTE*)source) { - refDelta = dictDelta; - lowLimit = dictionary; -- } -- else -- { -+ } else { - refDelta = 0; - lowLimit = (const BYTE*)source; -- } -- } -- LZ4_putPosition(ip, ctx, tableType, base); -- if ( ((dictIssue==dictSmall) ? (ref>=lowRefLimit) : 1) -- && (ref+MAX_DISTANCE>=ip) -- && (A32(ref+refDelta)==A32(ip)) ) -+ } } -+ LZ4_putPosition(ip, cctx->hashTable, tableType, base); -+ if ( ((dictIssue==dictSmall) ? (match>=lowRefLimit) : 1) -+ && (match+MAX_DISTANCE>=ip) -+ && (LZ4_read32(match+refDelta)==LZ4_read32(ip)) ) - { token=op++; *token=0; goto _next_match; } - - /* Prepare next loop */ -@@ -625,14 +657,20 @@ _next_match: - - _last_literals: - /* Encode Last Literals */ -- { -- int lastRun = (int)(iend - anchor); -- if ((outputLimited) && (((char*)op - dest) + lastRun + 1 + ((lastRun+255-RUN_MASK)/255) > (U32)maxOutputSize)) -- return 0; /* Check output limit */ -- if (lastRun>=(int)RUN_MASK) { *op++=(RUN_MASK<= 255 ; lastRun-=255) *op++ = 255; *op++ = (BYTE) lastRun; } -- else *op++ = (BYTE)(lastRun< (U32)maxOutputSize) ) -+ return 0; -+ if (lastRun >= RUN_MASK) { -+ size_t accumulator = lastRun - RUN_MASK; -+ *op++ = RUN_MASK << ML_BITS; -+ for(; accumulator >= 255 ; accumulator-=255) *op++ = 255; -+ *op++ = (BYTE) accumulator; -+ } else { -+ *op++ = (BYTE)(lastRun<internal_donotuse; -+ LZ4_resetStream((LZ4_stream_t*)state); -+ if (acceleration < 1) acceleration = ACCELERATION_DEFAULT; -+ -+ if (maxOutputSize >= LZ4_compressBound(inputSize)) { -+ if (inputSize < LZ4_64Klimit) -+ return LZ4_compress_generic(ctx, source, dest, inputSize, 0, notLimited, byU16, noDict, noDictIssue, acceleration); -+ else -+ return LZ4_compress_generic(ctx, source, dest, inputSize, 0, notLimited, (sizeof(void*)==8) ? byU32 : byPtr, noDict, noDictIssue, acceleration); -+ } else { -+ if (inputSize < LZ4_64Klimit) -+ return LZ4_compress_generic(ctx, source, dest, inputSize, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue, acceleration); -+ else -+ return LZ4_compress_generic(ctx, source, dest, inputSize, maxOutputSize, limitedOutput, (sizeof(void*)==8) ? byU32 : byPtr, noDict, noDictIssue, acceleration); -+ } -+} -+ -+ -+int LZ4_compress_fast(const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) -+{ -+#if (LZ4_HEAPMODE) -+ void* ctxPtr = ALLOCATOR(1, sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ - #else -- U32 ctx[LZ4_STREAMSIZE_U32] = {0}; /* Ensure data is aligned on 4-bytes boundaries */ -+ LZ4_stream_t ctx; -+ void* const ctxPtr = &ctx; - #endif -- int result; - -- if (inputSize < (int)LZ4_64KLIMIT) -- result = LZ4_compress_generic((void*)ctx, source, dest, inputSize, 0, notLimited, byU16, noDict, noDictIssue); -- else -- result = LZ4_compress_generic((void*)ctx, source, dest, inputSize, 0, notLimited, (sizeof(void*)==8) ? byU32 : byPtr, noDict, noDictIssue); -+ int const result = LZ4_compress_fast_extState(ctxPtr, source, dest, inputSize, maxOutputSize, acceleration); - --#if (HEAPMODE) -- FREEMEM(ctx); -+#if (LZ4_HEAPMODE) -+ FREEMEM(ctxPtr); - #endif - return result; - } - --int LZ4_compress_limitedOutput(const char* source, char* dest, int inputSize, int maxOutputSize) -+ -+int LZ4_compress_default(const char* source, char* dest, int inputSize, int maxOutputSize) - { --#if (HEAPMODE) -- void* ctx = ALLOCATOR(LZ4_STREAMSIZE_U32, 4); /* Aligned on 4-bytes boundaries */ -+ return LZ4_compress_fast(source, dest, inputSize, maxOutputSize, 1); -+} -+ -+ -+/* hidden debug function */ -+/* strangely enough, gcc generates faster code when this function is uncommented, even if unused */ -+int LZ4_compress_fast_force(const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) -+{ -+ LZ4_stream_t ctx; -+ LZ4_resetStream(&ctx); -+ -+ if (inputSize < LZ4_64Klimit) -+ return LZ4_compress_generic(&ctx.internal_donotuse, source, dest, inputSize, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue, acceleration); -+ else -+ return LZ4_compress_generic(&ctx.internal_donotuse, source, dest, inputSize, maxOutputSize, limitedOutput, sizeof(void*)==8 ? byU32 : byPtr, noDict, noDictIssue, acceleration); -+} -+ -+ -+/*-****************************** -+* *_destSize() variant -+********************************/ -+ -+static int LZ4_compress_destSize_generic( -+ LZ4_stream_t_internal* const ctx, -+ const char* const src, -+ char* const dst, -+ int* const srcSizePtr, -+ const int targetDstSize, -+ const tableType_t tableType) -+{ -+ const BYTE* ip = (const BYTE*) src; -+ const BYTE* base = (const BYTE*) src; -+ const BYTE* lowLimit = (const BYTE*) src; -+ const BYTE* anchor = ip; -+ const BYTE* const iend = ip + *srcSizePtr; -+ const BYTE* const mflimit = iend - MFLIMIT; -+ const BYTE* const matchlimit = iend - LASTLITERALS; -+ -+ BYTE* op = (BYTE*) dst; -+ BYTE* const oend = op + targetDstSize; -+ BYTE* const oMaxLit = op + targetDstSize - 2 /* offset */ - 8 /* because 8+MINMATCH==MFLIMIT */ - 1 /* token */; -+ BYTE* const oMaxMatch = op + targetDstSize - (LASTLITERALS + 1 /* token */); -+ BYTE* const oMaxSeq = oMaxLit - 1 /* token */; -+ -+ U32 forwardH; -+ -+ -+ /* Init conditions */ -+ if (targetDstSize < 1) return 0; /* Impossible to store anything */ -+ if ((U32)*srcSizePtr > (U32)LZ4_MAX_INPUT_SIZE) return 0; /* Unsupported input size, too large (or negative) */ -+ if ((tableType == byU16) && (*srcSizePtr>=LZ4_64Klimit)) return 0; /* Size too large (not within 64K limit) */ -+ if (*srcSizePtrhashTable, tableType, base); -+ ip++; forwardH = LZ4_hashPosition(ip, tableType); -+ -+ /* Main Loop */ -+ for ( ; ; ) { -+ const BYTE* match; -+ BYTE* token; -+ -+ /* Find a match */ -+ { const BYTE* forwardIp = ip; -+ unsigned step = 1; -+ unsigned searchMatchNb = 1 << LZ4_skipTrigger; -+ -+ do { -+ U32 h = forwardH; -+ ip = forwardIp; -+ forwardIp += step; -+ step = (searchMatchNb++ >> LZ4_skipTrigger); -+ -+ if (unlikely(forwardIp > mflimit)) goto _last_literals; -+ -+ match = LZ4_getPositionOnHash(h, ctx->hashTable, tableType, base); -+ forwardH = LZ4_hashPosition(forwardIp, tableType); -+ LZ4_putPositionOnHash(ip, h, ctx->hashTable, tableType, base); -+ -+ } while ( ((tableType==byU16) ? 0 : (match + MAX_DISTANCE < ip)) -+ || (LZ4_read32(match) != LZ4_read32(ip)) ); -+ } -+ -+ /* Catch up */ -+ while ((ip>anchor) && (match > lowLimit) && (unlikely(ip[-1]==match[-1]))) { ip--; match--; } -+ -+ /* Encode Literal length */ -+ { unsigned litLength = (unsigned)(ip - anchor); -+ token = op++; -+ if (op + ((litLength+240)/255) + litLength > oMaxLit) { -+ /* Not enough space for a last match */ -+ op--; -+ goto _last_literals; -+ } -+ if (litLength>=RUN_MASK) { -+ unsigned len = litLength - RUN_MASK; -+ *token=(RUN_MASK<= 255 ; len-=255) *op++ = 255; -+ *op++ = (BYTE)len; -+ } -+ else *token = (BYTE)(litLength< oMaxMatch) { -+ /* Match description too long : reduce it */ -+ matchLength = (15-1) + (oMaxMatch-op) * 255; -+ } -+ ip += MINMATCH + matchLength; -+ -+ if (matchLength>=ML_MASK) { -+ *token += ML_MASK; -+ matchLength -= ML_MASK; -+ while (matchLength >= 255) { matchLength-=255; *op++ = 255; } -+ *op++ = (BYTE)matchLength; -+ } -+ else *token += (BYTE)(matchLength); -+ } -+ -+ anchor = ip; -+ -+ /* Test end of block */ -+ if (ip > mflimit) break; -+ if (op > oMaxSeq) break; -+ -+ /* Fill table */ -+ LZ4_putPosition(ip-2, ctx->hashTable, tableType, base); -+ -+ /* Test next position */ -+ match = LZ4_getPosition(ip, ctx->hashTable, tableType, base); -+ LZ4_putPosition(ip, ctx->hashTable, tableType, base); -+ if ( (match+MAX_DISTANCE>=ip) -+ && (LZ4_read32(match)==LZ4_read32(ip)) ) -+ { token=op++; *token=0; goto _next_match; } -+ -+ /* Prepare next loop */ -+ forwardH = LZ4_hashPosition(++ip, tableType); -+ } -+ -+_last_literals: -+ /* Encode Last Literals */ -+ { size_t lastRunSize = (size_t)(iend - anchor); -+ if (op + 1 /* token */ + ((lastRunSize+240)/255) /* litLength */ + lastRunSize /* literals */ > oend) { -+ /* adapt lastRunSize to fill 'dst' */ -+ lastRunSize = (oend-op) - 1; -+ lastRunSize -= (lastRunSize+240)/255; -+ } -+ ip = anchor + lastRunSize; -+ -+ if (lastRunSize >= RUN_MASK) { -+ size_t accumulator = lastRunSize - RUN_MASK; -+ *op++ = RUN_MASK << ML_BITS; -+ for(; accumulator >= 255 ; accumulator-=255) *op++ = 255; -+ *op++ = (BYTE) accumulator; -+ } else { -+ *op++ = (BYTE)(lastRunSize<= LZ4_compressBound(*srcSizePtr)) { /* compression success is guaranteed */ -+ return LZ4_compress_fast_extState(state, src, dst, *srcSizePtr, targetDstSize, 1); -+ } else { -+ if (*srcSizePtr < LZ4_64Klimit) -+ return LZ4_compress_destSize_generic(&state->internal_donotuse, src, dst, srcSizePtr, targetDstSize, byU16); -+ else -+ return LZ4_compress_destSize_generic(&state->internal_donotuse, src, dst, srcSizePtr, targetDstSize, sizeof(void*)==8 ? byU32 : byPtr); -+ } -+} -+ -+ -+int LZ4_compress_destSize(const char* src, char* dst, int* srcSizePtr, int targetDstSize) -+{ -+#if (LZ4_HEAPMODE) -+ LZ4_stream_t* ctx = (LZ4_stream_t*)ALLOCATOR(1, sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ - #else -- U32 ctx[LZ4_STREAMSIZE_U32] = {0}; /* Ensure data is aligned on 4-bytes boundaries */ -+ LZ4_stream_t ctxBody; -+ LZ4_stream_t* ctx = &ctxBody; - #endif -- int result; - -- if (inputSize < (int)LZ4_64KLIMIT) -- result = LZ4_compress_generic((void*)ctx, source, dest, inputSize, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue); -- else -- result = LZ4_compress_generic((void*)ctx, source, dest, inputSize, maxOutputSize, limitedOutput, (sizeof(void*)==8) ? byU32 : byPtr, noDict, noDictIssue); -+ int result = LZ4_compress_destSize_extState(ctx, src, dst, srcSizePtr, targetDstSize); - --#if (HEAPMODE) -+#if (LZ4_HEAPMODE) - FREEMEM(ctx); - #endif - return result; - } - - --/***************************************** -- Experimental : Streaming functions --*****************************************/ - --void* LZ4_createStream() -+/*-****************************** -+* Streaming functions -+********************************/ -+ -+LZ4_stream_t* LZ4_createStream(void) - { -- void* lz4s = ALLOCATOR(4, LZ4_STREAMSIZE_U32); -- MEM_INIT(lz4s, 0, LZ4_STREAMSIZE); -+ LZ4_stream_t* lz4s = (LZ4_stream_t*)ALLOCATOR(8, LZ4_STREAMSIZE_U64); -+ LZ4_STATIC_ASSERT(LZ4_STREAMSIZE >= sizeof(LZ4_stream_t_internal)); /* A compilation error here means LZ4_STREAMSIZE is not large enough */ -+ LZ4_resetStream(lz4s); - return lz4s; - } - --int LZ4_free (void* LZ4_stream) -+void LZ4_resetStream (LZ4_stream_t* LZ4_stream) -+{ -+ MEM_INIT(LZ4_stream, 0, sizeof(LZ4_stream_t)); -+} -+ -+int LZ4_freeStream (LZ4_stream_t* LZ4_stream) - { -+ if (!LZ4_stream) return 0; /* support free on NULL */ - FREEMEM(LZ4_stream); - return (0); - } - - --int LZ4_loadDict (void* LZ4_dict, const char* dictionary, int dictSize) -+#define HASH_UNIT sizeof(reg_t) -+int LZ4_loadDict (LZ4_stream_t* LZ4_dict, const char* dictionary, int dictSize) - { -- LZ4_stream_t_internal* dict = (LZ4_stream_t_internal*) LZ4_dict; -+ LZ4_stream_t_internal* dict = &LZ4_dict->internal_donotuse; - const BYTE* p = (const BYTE*)dictionary; - const BYTE* const dictEnd = p + dictSize; - const BYTE* base; - -- LZ4_STATIC_ASSERT(LZ4_STREAMSIZE >= sizeof(LZ4_stream_t_internal)); /* A compilation error here means LZ4_STREAMSIZE is not large enough */ -- if (dict->initCheck) MEM_INIT(dict, 0, sizeof(LZ4_stream_t_internal)); /* Uninitialized structure detected */ -+ if ((dict->initCheck) || (dict->currentOffset > 1 GB)) /* Uninitialized structure, or reuse overflow */ -+ LZ4_resetStream(LZ4_dict); - -- if (dictSize < MINMATCH) -- { -+ if (dictSize < (int)HASH_UNIT) { - dict->dictionary = NULL; - dict->dictSize = 0; -- return 1; -+ return 0; - } - -- if (p <= dictEnd - 64 KB) p = dictEnd - 64 KB; -+ if ((dictEnd - p) > 64 KB) p = dictEnd - 64 KB; -+ dict->currentOffset += 64 KB; - base = p - dict->currentOffset; - dict->dictionary = p; - dict->dictSize = (U32)(dictEnd - p); - dict->currentOffset += dict->dictSize; - -- while (p <= dictEnd-MINMATCH) -- { -- LZ4_putPosition(p, dict, byU32, base); -+ while (p <= dictEnd-HASH_UNIT) { -+ LZ4_putPosition(p, dict->hashTable, byU32, base); - p+=3; - } - -- return 1; -+ return dict->dictSize; - } - - --void LZ4_renormDictT(LZ4_stream_t_internal* LZ4_dict, const BYTE* src) -+static void LZ4_renormDictT(LZ4_stream_t_internal* LZ4_dict, const BYTE* src) - { - if ((LZ4_dict->currentOffset > 0x80000000) || -- ((size_t)LZ4_dict->currentOffset > (size_t)src)) /* address space overflow */ -- { -+ ((uptrval)LZ4_dict->currentOffset > (uptrval)src)) { /* address space overflow */ - /* rescale hash table */ -- U32 delta = LZ4_dict->currentOffset - 64 KB; -+ U32 const delta = LZ4_dict->currentOffset - 64 KB; - const BYTE* dictEnd = LZ4_dict->dictionary + LZ4_dict->dictSize; - int i; -- for (i=0; ihashTable[i] < delta) LZ4_dict->hashTable[i]=0; - else LZ4_dict->hashTable[i] -= delta; - } -@@ -753,22 +1007,20 @@ void LZ4_renormDictT(LZ4_stream_t_internal* LZ4_dict, const BYTE* src) - } - - --FORCE_INLINE int LZ4_compress_continue_generic (void* LZ4_stream, const char* source, char* dest, int inputSize, -- int maxOutputSize, limitedOutput_directive limit) -+int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream, const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) - { -- LZ4_stream_t_internal* streamPtr = (LZ4_stream_t_internal*)LZ4_stream; -+ LZ4_stream_t_internal* streamPtr = &LZ4_stream->internal_donotuse; - const BYTE* const dictEnd = streamPtr->dictionary + streamPtr->dictSize; - - const BYTE* smallest = (const BYTE*) source; - if (streamPtr->initCheck) return 0; /* Uninitialized structure detected */ - if ((streamPtr->dictSize>0) && (smallest>dictEnd)) smallest = dictEnd; - LZ4_renormDictT(streamPtr, smallest); -+ if (acceleration < 1) acceleration = ACCELERATION_DEFAULT; - - /* Check overlapping input/dictionary space */ -- { -- const BYTE* sourceEnd = (const BYTE*) source + inputSize; -- if ((sourceEnd > streamPtr->dictionary) && (sourceEnd < dictEnd)) -- { -+ { const BYTE* sourceEnd = (const BYTE*) source + inputSize; -+ if ((sourceEnd > streamPtr->dictionary) && (sourceEnd < dictEnd)) { - streamPtr->dictSize = (U32)(dictEnd - sourceEnd); - if (streamPtr->dictSize > 64 KB) streamPtr->dictSize = 64 KB; - if (streamPtr->dictSize < 4) streamPtr->dictSize = 0; -@@ -777,25 +1029,23 @@ FORCE_INLINE int LZ4_compress_continue_generic (void* LZ4_stream, const char* so - } - - /* prefix mode : source data follows dictionary */ -- if (dictEnd == (const BYTE*)source) -- { -+ if (dictEnd == (const BYTE*)source) { - int result; - if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) -- result = LZ4_compress_generic(LZ4_stream, source, dest, inputSize, maxOutputSize, limit, byU32, withPrefix64k, dictSmall); -+ result = LZ4_compress_generic(streamPtr, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, withPrefix64k, dictSmall, acceleration); - else -- result = LZ4_compress_generic(LZ4_stream, source, dest, inputSize, maxOutputSize, limit, byU32, withPrefix64k, noDictIssue); -+ result = LZ4_compress_generic(streamPtr, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, withPrefix64k, noDictIssue, acceleration); - streamPtr->dictSize += (U32)inputSize; - streamPtr->currentOffset += (U32)inputSize; - return result; - } - - /* external dictionary mode */ -- { -- int result; -+ { int result; - if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) -- result = LZ4_compress_generic(LZ4_stream, source, dest, inputSize, maxOutputSize, limit, byU32, usingExtDict, dictSmall); -+ result = LZ4_compress_generic(streamPtr, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, usingExtDict, dictSmall, acceleration); - else -- result = LZ4_compress_generic(LZ4_stream, source, dest, inputSize, maxOutputSize, limit, byU32, usingExtDict, noDictIssue); -+ result = LZ4_compress_generic(streamPtr, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, usingExtDict, noDictIssue, acceleration); - streamPtr->dictionary = (const BYTE*)source; - streamPtr->dictSize = (U32)inputSize; - streamPtr->currentOffset += (U32)inputSize; -@@ -804,29 +1054,18 @@ FORCE_INLINE int LZ4_compress_continue_generic (void* LZ4_stream, const char* so - } - - --int LZ4_compress_continue (void* LZ4_stream, const char* source, char* dest, int inputSize) --{ -- return LZ4_compress_continue_generic(LZ4_stream, source, dest, inputSize, 0, notLimited); --} -- --int LZ4_compress_limitedOutput_continue (void* LZ4_stream, const char* source, char* dest, int inputSize, int maxOutputSize) --{ -- return LZ4_compress_continue_generic(LZ4_stream, source, dest, inputSize, maxOutputSize, limitedOutput); --} -- -- --// Hidden debug function, to force separate dictionary mode -+/* Hidden debug function, to force external dictionary mode */ - int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* dest, int inputSize) - { -- LZ4_stream_t_internal* streamPtr = (LZ4_stream_t_internal*)LZ4_dict; -+ LZ4_stream_t_internal* streamPtr = &LZ4_dict->internal_donotuse; - int result; - const BYTE* const dictEnd = streamPtr->dictionary + streamPtr->dictSize; - - const BYTE* smallest = dictEnd; - if (smallest > (const BYTE*) source) smallest = (const BYTE*) source; -- LZ4_renormDictT((LZ4_stream_t_internal*)LZ4_dict, smallest); -+ LZ4_renormDictT(streamPtr, smallest); - -- result = LZ4_compress_generic(LZ4_dict, source, dest, inputSize, 0, notLimited, byU32, usingExtDict, noDictIssue); -+ result = LZ4_compress_generic(streamPtr, source, dest, inputSize, 0, notLimited, byU32, usingExtDict, noDictIssue, 1); - - streamPtr->dictionary = (const BYTE*)source; - streamPtr->dictSize = (U32)inputSize; -@@ -836,36 +1075,43 @@ int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* - } - - --int LZ4_saveDict (void* LZ4_dict, char* safeBuffer, int dictSize) -+/*! LZ4_saveDict() : -+ * If previously compressed data block is not guaranteed to remain available at its memory location, -+ * save it into a safer place (char* safeBuffer). -+ * Note : you don't need to call LZ4_loadDict() afterwards, -+ * dictionary is immediately usable, you can therefore call LZ4_compress_fast_continue(). -+ * Return : saved dictionary size in bytes (necessarily <= dictSize), or 0 if error. -+ */ -+int LZ4_saveDict (LZ4_stream_t* LZ4_dict, char* safeBuffer, int dictSize) - { -- LZ4_stream_t_internal* dict = (LZ4_stream_t_internal*) LZ4_dict; -- const BYTE* previousDictEnd = dict->dictionary + dict->dictSize; -+ LZ4_stream_t_internal* const dict = &LZ4_dict->internal_donotuse; -+ const BYTE* const previousDictEnd = dict->dictionary + dict->dictSize; - - if ((U32)dictSize > 64 KB) dictSize = 64 KB; /* useless to define a dictionary > 64 KB */ - if ((U32)dictSize > dict->dictSize) dictSize = dict->dictSize; - -- memcpy(safeBuffer, previousDictEnd - dictSize, dictSize); -+ memmove(safeBuffer, previousDictEnd - dictSize, dictSize); - - dict->dictionary = (const BYTE*)safeBuffer; - dict->dictSize = (U32)dictSize; - -- return 1; -+ return dictSize; - } - - - --/**************************** -- Decompression functions --****************************/ --/* -- * This generic decompression function cover all use cases. -- * It shall be instanciated several times, using different sets of directives -- * Note that it is essential this generic function is really inlined, -- * in order to remove useless branches during compilation optimisation. -+/*-***************************** -+* Decompression functions -+*******************************/ -+/*! LZ4_decompress_generic() : -+ * This generic decompression function cover all use cases. -+ * It shall be instantiated several times, using different sets of directives -+ * Note that it is important this generic function is really inlined, -+ * in order to remove useless branches during compilation optimization. - */ - FORCE_INLINE int LZ4_decompress_generic( -- const char* source, -- char* dest, -+ const char* const source, -+ char* const dest, - int inputSize, - int outputSize, /* If endOnInput==endOnInputSize, this value is the max size of Output Buffer. */ - -@@ -873,162 +1119,143 @@ FORCE_INLINE int LZ4_decompress_generic( - int partialDecoding, /* full, partial */ - int targetOutputSize, /* only used if partialDecoding==partial */ - int dict, /* noDict, withPrefix64k, usingExtDict */ -- const char* dictStart, /* only if dict==usingExtDict */ -- int dictSize /* note : = 0 if noDict */ -+ const BYTE* const lowPrefix, /* == dest when no prefix */ -+ const BYTE* const dictStart, /* only if dict==usingExtDict */ -+ const size_t dictSize /* note : = 0 if noDict */ - ) - { - /* Local Variables */ -- const BYTE* restrict ip = (const BYTE*) source; -- const BYTE* ref; -+ const BYTE* ip = (const BYTE*) source; - const BYTE* const iend = ip + inputSize; - - BYTE* op = (BYTE*) dest; - BYTE* const oend = op + outputSize; - BYTE* cpy; - BYTE* oexit = op + targetOutputSize; -- const BYTE* const lowLimit = (const BYTE*)dest - dictSize; -+ const BYTE* const lowLimit = lowPrefix - dictSize; - - const BYTE* const dictEnd = (const BYTE*)dictStart + dictSize; --//#define OLD --#ifdef OLD -- const size_t dec32table[] = {0, 3, 2, 3, 0, 0, 0, 0}; /* static reduces speed for LZ4_decompress_safe() on GCC64 */ --#else -- const size_t dec32table[] = {4-0, 4-3, 4-2, 4-3, 4-0, 4-0, 4-0, 4-0}; /* static reduces speed for LZ4_decompress_safe() on GCC64 */ --#endif -- static const size_t dec64table[] = {0, 0, 0, (size_t)-1, 0, 1, 2, 3}; -+ const unsigned dec32table[] = {0, 1, 2, 1, 4, 4, 4, 4}; -+ const int dec64table[] = {0, 0, 0, -1, 0, 1, 2, 3}; - -- const int checkOffset = (endOnInput) && (dictSize < (int)(64 KB)); -+ const int safeDecode = (endOnInput==endOnInputSize); -+ const int checkOffset = ((safeDecode) && (dictSize < (int)(64 KB))); - - - /* Special cases */ -- if ((partialDecoding) && (oexit> oend-MFLIMIT)) oexit = oend-MFLIMIT; /* targetOutputSize too high => decode everything */ -- if ((endOnInput) && (unlikely(outputSize==0))) return ((inputSize==1) && (*ip==0)) ? 0 : -1; /* Empty output buffer */ -+ if ((partialDecoding) && (oexit > oend-MFLIMIT)) oexit = oend-MFLIMIT; /* targetOutputSize too high => decode everything */ -+ if ((endOnInput) && (unlikely(outputSize==0))) return ((inputSize==1) && (*ip==0)) ? 0 : -1; /* Empty output buffer */ - if ((!endOnInput) && (unlikely(outputSize==0))) return (*ip==0?1:-1); - -- -- /* Main Loop */ -- while (1) -- { -- unsigned token; -+ /* Main Loop : decode sequences */ -+ while (1) { - size_t length; -+ const BYTE* match; -+ size_t offset; - -- /* get runlength */ -- token = *ip++; -- if ((length=(token>>ML_BITS)) == RUN_MASK) -- { -+ /* get literal length */ -+ unsigned const token = *ip++; -+ if ((length=(token>>ML_BITS)) == RUN_MASK) { - unsigned s; -- do -- { -+ do { - s = *ip++; - length += s; -- } -- while (likely((endOnInput)?ipLZ4_MAX_INPUT_SIZE)) goto _output_error; /* overflow detection */ -- if ((sizeof(void*)==4) && unlikely((size_t)(op+length)<(size_t)(op))) goto _output_error; /* quickfix issue 134 */ -- if ((endOnInput) && (sizeof(void*)==4) && unlikely((size_t)(ip+length)<(size_t)(ip))) goto _output_error; /* quickfix issue 134 */ -+ } while ( likely(endOnInput ? ip(partialDecoding?oexit:oend-MFLIMIT)) || (ip+length>iend-(2+1+LASTLITERALS))) ) -- || ((!endOnInput) && (cpy>oend-COPYLENGTH))) -+ if ( ((endOnInput) && ((cpy>(partialDecoding?oexit:oend-MFLIMIT)) || (ip+length>iend-(2+1+LASTLITERALS))) ) -+ || ((!endOnInput) && (cpy>oend-WILDCOPYLENGTH)) ) - { -- if (partialDecoding) -- { -+ if (partialDecoding) { - if (cpy > oend) goto _output_error; /* Error : write attempt beyond end of output buffer */ - if ((endOnInput) && (ip+length > iend)) goto _output_error; /* Error : read attempt beyond end of input buffer */ -- } -- else -- { -+ } else { - if ((!endOnInput) && (cpy != oend)) goto _output_error; /* Error : block decoding must stop exactly there */ - if ((endOnInput) && ((ip+length != iend) || (cpy > oend))) goto _output_error; /* Error : input must be consumed */ - } - memcpy(op, ip, length); - ip += length; - op += length; -- break; /* Necessarily EOF, due to parsing restrictions */ -+ break; /* Necessarily EOF, due to parsing restrictions */ - } -- LZ4_WILDCOPY(op, ip, cpy); ip -= (op-cpy); op = cpy; -+ LZ4_wildCopy(op, ip, cpy); -+ ip += length; op = cpy; - - /* get offset */ -- LZ4_READ_LITTLEENDIAN_16(ref,cpy,ip); ip+=2; -- if ((checkOffset) && (unlikely(ref < lowLimit))) goto _output_error; /* Error : offset outside destination buffer */ -+ offset = LZ4_readLE16(ip); ip+=2; -+ match = op - offset; -+ if ((checkOffset) && (unlikely(match < lowLimit))) goto _output_error; /* Error : offset outside buffers */ -+ LZ4_write32(op, (U32)offset); /* costs ~1%; silence an msan warning when offset==0 */ - - /* get matchlength */ -- if ((length=(token&ML_MASK)) == ML_MASK) -- { -+ length = token & ML_MASK; -+ if (length == ML_MASK) { - unsigned s; -- do -- { -- if ((endOnInput) && (ip > iend-LASTLITERALS)) goto _output_error; -+ do { - s = *ip++; -+ if ((endOnInput) && (ip > iend-LASTLITERALS)) goto _output_error; - length += s; - } while (s==255); -- //if ((sizeof(void*)==4) && unlikely(length>LZ4_MAX_INPUT_SIZE)) goto _output_error; /* overflow detection */ -- if ((sizeof(void*)==4) && unlikely((size_t)(op+length)<(size_t)op)) goto _output_error; /* quickfix issue 134 */ -+ if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)op)) goto _output_error; /* overflow detection */ - } -+ length += MINMATCH; - - /* check external dictionary */ -- if ((dict==usingExtDict) && (ref < (BYTE* const)dest)) -- { -- if (unlikely(op+length+MINMATCH > oend-LASTLITERALS)) goto _output_error; -- -- if (length+MINMATCH <= (size_t)(dest-(char*)ref)) -- { -- ref = dictEnd - (dest-(char*)ref); -- memcpy(op, ref, length+MINMATCH); -- op += length+MINMATCH; -- } -- else -- { -- size_t copySize = (size_t)(dest-(char*)ref); -+ if ((dict==usingExtDict) && (match < lowPrefix)) { -+ if (unlikely(op+length > oend-LASTLITERALS)) goto _output_error; /* doesn't respect parsing restriction */ -+ -+ if (length <= (size_t)(lowPrefix-match)) { -+ /* match can be copied as a single segment from external dictionary */ -+ memmove(op, dictEnd - (lowPrefix-match), length); -+ op += length; -+ } else { -+ /* match encompass external dictionary and current block */ -+ size_t const copySize = (size_t)(lowPrefix-match); -+ size_t const restSize = length - copySize; - memcpy(op, dictEnd - copySize, copySize); - op += copySize; -- copySize = length+MINMATCH - copySize; -- if (copySize > (size_t)((char*)op-dest)) /* overlap */ -- { -- BYTE* const cpy = op + copySize; -- const BYTE* ref = (BYTE*)dest; -- while (op < cpy) *op++ = *ref++; -- } -- else -- { -- memcpy(op, dest, copySize); -- op += copySize; -- } -- } -+ if (restSize > (size_t)(op-lowPrefix)) { /* overlap copy */ -+ BYTE* const endOfMatch = op + restSize; -+ const BYTE* copyFrom = lowPrefix; -+ while (op < endOfMatch) *op++ = *copyFrom++; -+ } else { -+ memcpy(op, lowPrefix, restSize); -+ op += restSize; -+ } } - continue; - } - -- /* copy repeated sequence */ -- if (unlikely((op-ref)<(int)STEPSIZE)) -- { -- const size_t dec64 = dec64table[(sizeof(void*)==4) ? 0 : op-ref]; -- op[0] = ref[0]; -- op[1] = ref[1]; -- op[2] = ref[2]; -- op[3] = ref[3]; --#ifdef OLD -- op += 4, ref += 4; ref -= dec32table[op-ref]; -- A32(op) = A32(ref); -- op += STEPSIZE-4; ref -= dec64; --#else -- ref += dec32table[op-ref]; -- A32(op+4) = A32(ref); -- op += STEPSIZE; ref -= dec64; --#endif -- } else { LZ4_COPYSTEP(op,ref); } -- cpy = op + length - (STEPSIZE-4); -- -- if (unlikely(cpy>oend-COPYLENGTH-(STEPSIZE-4))) -- { -- if (cpy > oend-LASTLITERALS) goto _output_error; /* Error : last 5 bytes must be literals */ -- if (opoend-12)) { -+ BYTE* const oCopyLimit = oend-(WILDCOPYLENGTH-1); -+ if (cpy > oend-LASTLITERALS) goto _output_error; /* Error : last LASTLITERALS bytes must be literals (uncompressed) */ -+ if (op < oCopyLimit) { -+ LZ4_wildCopy(op, match, oCopyLimit); -+ match += oCopyLimit - op; -+ op = oCopyLimit; -+ } -+ while (op16) LZ4_wildCopy(op+8, match+8, cpy); - } -- LZ4_WILDCOPY(op, ref, cpy); - op=cpy; /* correction */ - } - -@@ -1036,64 +1263,59 @@ FORCE_INLINE int LZ4_decompress_generic( - if (endOnInput) - return (int) (((char*)op)-dest); /* Nb of output bytes decoded */ - else -- return (int) (((char*)ip)-source); /* Nb of input bytes read */ -+ return (int) (((const char*)ip)-source); /* Nb of input bytes read */ - - /* Overflow error detected */ - _output_error: -- return (int) (-(((char*)ip)-source))-1; -+ return (int) (-(((const char*)ip)-source))-1; - } - - --int LZ4_decompress_safe(const char* source, char* dest, int compressedSize, int maxOutputSize) -+int LZ4_decompress_safe(const char* source, char* dest, int compressedSize, int maxDecompressedSize) - { -- return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, full, 0, noDict, NULL, 0); -+ return LZ4_decompress_generic(source, dest, compressedSize, maxDecompressedSize, endOnInputSize, full, 0, noDict, (BYTE*)dest, NULL, 0); - } - --int LZ4_decompress_safe_partial(const char* source, char* dest, int compressedSize, int targetOutputSize, int maxOutputSize) -+int LZ4_decompress_safe_partial(const char* source, char* dest, int compressedSize, int targetOutputSize, int maxDecompressedSize) - { -- return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, partial, targetOutputSize, noDict, NULL, 0); -+ return LZ4_decompress_generic(source, dest, compressedSize, maxDecompressedSize, endOnInputSize, partial, targetOutputSize, noDict, (BYTE*)dest, NULL, 0); - } - - int LZ4_decompress_fast(const char* source, char* dest, int originalSize) - { -- return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, full, 0, withPrefix64k, NULL, 0); -+ return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, full, 0, withPrefix64k, (BYTE*)(dest - 64 KB), NULL, 64 KB); - } - --/* streaming decompression functions */ - --//#define LZ4_STREAMDECODESIZE_U32 4 --//#define LZ4_STREAMDECODESIZE (LZ4_STREAMDECODESIZE_U32 * sizeof(unsigned int)) --//typedef struct { unsigned int table[LZ4_STREAMDECODESIZE_U32]; } LZ4_streamDecode_t; --typedef struct --{ -- const char* dictionary; -- int dictSize; --} LZ4_streamDecode_t_internal; -+/*===== streaming decompression functions =====*/ - --/* -- * If you prefer dynamic allocation methods, -- * LZ4_createStreamDecode() -- * provides a pointer (void*) towards an initialized LZ4_streamDecode_t structure. -- */ --void* LZ4_createStreamDecode() -+LZ4_streamDecode_t* LZ4_createStreamDecode(void) - { -- void* lz4s = ALLOCATOR(sizeof(U32), LZ4_STREAMDECODESIZE_U32); -- MEM_INIT(lz4s, 0, LZ4_STREAMDECODESIZE); -+ LZ4_streamDecode_t* lz4s = (LZ4_streamDecode_t*) ALLOCATOR(1, sizeof(LZ4_streamDecode_t)); - return lz4s; - } - --/* -- * LZ4_setDictDecode -- * Use this function to instruct where to find the dictionary -+int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream) -+{ -+ if (!LZ4_stream) return 0; /* support free on NULL */ -+ FREEMEM(LZ4_stream); -+ return 0; -+} -+ -+/*! -+ * LZ4_setStreamDecode() : -+ * Use this function to instruct where to find the dictionary. - * This function is not necessary if previous data is still available where it was decoded. - * Loading a size of 0 is allowed (same effect as no dictionary). - * Return : 1 if OK, 0 if error - */ --int LZ4_setDictDecode (void* LZ4_streamDecode, const char* dictionary, int dictSize) -+int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize) - { -- LZ4_streamDecode_t_internal* lz4sd = (LZ4_streamDecode_t_internal*) LZ4_streamDecode; -- lz4sd->dictionary = dictionary; -- lz4sd->dictSize = dictSize; -+ LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; -+ lz4sd->prefixSize = (size_t) dictSize; -+ lz4sd->prefixEnd = (const BYTE*) dictionary + dictSize; -+ lz4sd->externalDict = NULL; -+ lz4sd->extDictSize = 0; - return 1; - } - -@@ -1102,43 +1324,55 @@ int LZ4_setDictDecode (void* LZ4_streamDecode, const char* dictionary, int dictS - These decoding functions allow decompression of multiple blocks in "streaming" mode. - Previously decoded blocks must still be available at the memory position where they were decoded. - If it's not possible, save the relevant part of decoded data into a safe buffer, -- and indicate where it stands using LZ4_setDictDecode() -+ and indicate where it stands using LZ4_setStreamDecode() - */ --int LZ4_decompress_safe_continue (void* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxOutputSize) -+int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxOutputSize) - { -- LZ4_streamDecode_t_internal* lz4sd = (LZ4_streamDecode_t_internal*) LZ4_streamDecode; -+ LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; - int result; - -- result = LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, full, 0, usingExtDict, lz4sd->dictionary, lz4sd->dictSize); -- if (result <= 0) return result; -- if (lz4sd->dictionary + lz4sd->dictSize == dest) -- { -- lz4sd->dictSize += result; -- } -- else -- { -- lz4sd->dictionary = dest; -- lz4sd->dictSize = result; -+ if (lz4sd->prefixEnd == (BYTE*)dest) { -+ result = LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, -+ endOnInputSize, full, 0, -+ usingExtDict, lz4sd->prefixEnd - lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize); -+ if (result <= 0) return result; -+ lz4sd->prefixSize += result; -+ lz4sd->prefixEnd += result; -+ } else { -+ lz4sd->extDictSize = lz4sd->prefixSize; -+ lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize; -+ result = LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, -+ endOnInputSize, full, 0, -+ usingExtDict, (BYTE*)dest, lz4sd->externalDict, lz4sd->extDictSize); -+ if (result <= 0) return result; -+ lz4sd->prefixSize = result; -+ lz4sd->prefixEnd = (BYTE*)dest + result; - } - - return result; - } - --int LZ4_decompress_fast_continue (void* LZ4_streamDecode, const char* source, char* dest, int originalSize) -+int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int originalSize) - { -- LZ4_streamDecode_t_internal* lz4sd = (LZ4_streamDecode_t_internal*) LZ4_streamDecode; -+ LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; - int result; - -- result = LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, full, 0, usingExtDict, lz4sd->dictionary, lz4sd->dictSize); -- if (result <= 0) return result; -- if (lz4sd->dictionary + lz4sd->dictSize == dest) -- { -- lz4sd->dictSize += result; -- } -- else -- { -- lz4sd->dictionary = dest; -- lz4sd->dictSize = result; -+ if (lz4sd->prefixEnd == (BYTE*)dest) { -+ result = LZ4_decompress_generic(source, dest, 0, originalSize, -+ endOnOutputSize, full, 0, -+ usingExtDict, lz4sd->prefixEnd - lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize); -+ if (result <= 0) return result; -+ lz4sd->prefixSize += originalSize; -+ lz4sd->prefixEnd += originalSize; -+ } else { -+ lz4sd->extDictSize = lz4sd->prefixSize; -+ lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize; -+ result = LZ4_decompress_generic(source, dest, 0, originalSize, -+ endOnOutputSize, full, 0, -+ usingExtDict, (BYTE*)dest, lz4sd->externalDict, lz4sd->extDictSize); -+ if (result <= 0) return result; -+ lz4sd->prefixSize = originalSize; -+ lz4sd->prefixEnd = (BYTE*)dest + originalSize; - } - - return result; -@@ -1152,12 +1386,97 @@ Advanced decoding functions : - the dictionary must be explicitly provided within parameters - */ - -+FORCE_INLINE int LZ4_decompress_usingDict_generic(const char* source, char* dest, int compressedSize, int maxOutputSize, int safe, const char* dictStart, int dictSize) -+{ -+ if (dictSize==0) -+ return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, noDict, (BYTE*)dest, NULL, 0); -+ if (dictStart+dictSize == dest) { -+ if (dictSize >= (int)(64 KB - 1)) -+ return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, withPrefix64k, (BYTE*)dest-64 KB, NULL, 0); -+ return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, noDict, (BYTE*)dest-dictSize, NULL, 0); -+ } -+ return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, usingExtDict, (BYTE*)dest, (const BYTE*)dictStart, dictSize); -+} -+ - int LZ4_decompress_safe_usingDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize) - { -- return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, full, 0, usingExtDict, dictStart, dictSize); -+ return LZ4_decompress_usingDict_generic(source, dest, compressedSize, maxOutputSize, 1, dictStart, dictSize); - } - - int LZ4_decompress_fast_usingDict(const char* source, char* dest, int originalSize, const char* dictStart, int dictSize) - { -- return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, full, 0, usingExtDict, dictStart, dictSize); -+ return LZ4_decompress_usingDict_generic(source, dest, 0, originalSize, 0, dictStart, dictSize); -+} -+ -+/* debug function */ -+int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize) -+{ -+ return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, full, 0, usingExtDict, (BYTE*)dest, (const BYTE*)dictStart, dictSize); - } -+ -+ -+/*=************************************************* -+* Obsolete Functions -+***************************************************/ -+/* obsolete compression functions */ -+int LZ4_compress_limitedOutput(const char* source, char* dest, int inputSize, int maxOutputSize) { return LZ4_compress_default(source, dest, inputSize, maxOutputSize); } -+int LZ4_compress(const char* source, char* dest, int inputSize) { return LZ4_compress_default(source, dest, inputSize, LZ4_compressBound(inputSize)); } -+int LZ4_compress_limitedOutput_withState (void* state, const char* src, char* dst, int srcSize, int dstSize) { return LZ4_compress_fast_extState(state, src, dst, srcSize, dstSize, 1); } -+int LZ4_compress_withState (void* state, const char* src, char* dst, int srcSize) { return LZ4_compress_fast_extState(state, src, dst, srcSize, LZ4_compressBound(srcSize), 1); } -+int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_stream, const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_fast_continue(LZ4_stream, src, dst, srcSize, maxDstSize, 1); } -+int LZ4_compress_continue (LZ4_stream_t* LZ4_stream, const char* source, char* dest, int inputSize) { return LZ4_compress_fast_continue(LZ4_stream, source, dest, inputSize, LZ4_compressBound(inputSize), 1); } -+ -+/* -+These function names are deprecated and should no longer be used. -+They are only provided here for compatibility with older user programs. -+- LZ4_uncompress is totally equivalent to LZ4_decompress_fast -+- LZ4_uncompress_unknownOutputSize is totally equivalent to LZ4_decompress_safe -+*/ -+int LZ4_uncompress (const char* source, char* dest, int outputSize) { return LZ4_decompress_fast(source, dest, outputSize); } -+int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize) { return LZ4_decompress_safe(source, dest, isize, maxOutputSize); } -+ -+ -+/* Obsolete Streaming functions */ -+ -+int LZ4_sizeofStreamState() { return LZ4_STREAMSIZE; } -+ -+static void LZ4_init(LZ4_stream_t* lz4ds, BYTE* base) -+{ -+ MEM_INIT(lz4ds, 0, sizeof(LZ4_stream_t)); -+ lz4ds->internal_donotuse.bufferStart = base; -+} -+ -+int LZ4_resetStreamState(void* state, char* inputBuffer) -+{ -+ if ((((uptrval)state) & 3) != 0) return 1; /* Error : pointer is not aligned on 4-bytes boundary */ -+ LZ4_init((LZ4_stream_t*)state, (BYTE*)inputBuffer); -+ return 0; -+} -+ -+void* LZ4_create (char* inputBuffer) -+{ -+ LZ4_stream_t* lz4ds = (LZ4_stream_t*)ALLOCATOR(8, sizeof(LZ4_stream_t)); -+ LZ4_init (lz4ds, (BYTE*)inputBuffer); -+ return lz4ds; -+} -+ -+char* LZ4_slideInputBuffer (void* LZ4_Data) -+{ -+ LZ4_stream_t_internal* ctx = &((LZ4_stream_t*)LZ4_Data)->internal_donotuse; -+ int dictSize = LZ4_saveDict((LZ4_stream_t*)LZ4_Data, (char*)ctx->bufferStart, 64 KB); -+ return (char*)(ctx->bufferStart + dictSize); -+} -+ -+/* Obsolete streaming decompression functions */ -+ -+int LZ4_decompress_safe_withPrefix64k(const char* source, char* dest, int compressedSize, int maxOutputSize) -+{ -+ return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, full, 0, withPrefix64k, (BYTE*)dest - 64 KB, NULL, 64 KB); -+} -+ -+int LZ4_decompress_fast_withPrefix64k(const char* source, char* dest, int originalSize) -+{ -+ return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, full, 0, withPrefix64k, (BYTE*)dest - 64 KB, NULL, 64 KB); -+} -+ -+#endif /* LZ4_COMMONDEFS_ONLY */ -diff --git mfbt/lz4.h mfbt/lz4.h -index bf6780122f6f..86ca0d59c1f4 100644 ---- mfbt/lz4.h -+++ mfbt/lz4.h -@@ -1,7 +1,8 @@ - /* -- LZ4 - Fast LZ compression algorithm -- Header File -- Copyright (C) 2011-2014, Yann Collet. -+ * LZ4 - Fast LZ compression algorithm -+ * Header File -+ * Copyright (C) 2011-2017, Yann Collet. -+ - BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) - - Redistribution and use in source and binary forms, with or without -@@ -28,247 +29,433 @@ - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - You can contact the author at : -- - LZ4 source repository : http://code.google.com/p/lz4/ -- - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c -+ - LZ4 homepage : http://www.lz4.org -+ - LZ4 source repository : https://github.com/lz4/lz4 - */ --#pragma once -- - #if defined (__cplusplus) - extern "C" { - #endif - -+#ifndef LZ4_H_2983827168210 -+#define LZ4_H_2983827168210 - --/************************************** -- Version --**************************************/ --#define LZ4_VERSION_MAJOR 1 /* for major interface/format changes */ --#define LZ4_VERSION_MINOR 2 /* for minor interface/format changes */ -+/* --- Dependency --- */ -+#include /* size_t */ -+ -+ -+/** -+ Introduction -+ -+ LZ4 is lossless compression algorithm, providing compression speed at 400 MB/s per core, -+ scalable with multi-cores CPU. It features an extremely fast decoder, with speed in -+ multiple GB/s per core, typically reaching RAM speed limits on multi-core systems. -+ -+ The LZ4 compression library provides in-memory compression and decompression functions. -+ Compression can be done in: -+ - a single step (described as Simple Functions) -+ - a single step, reusing a context (described in Advanced Functions) -+ - unbounded multiple steps (described as Streaming compression) -+ -+ lz4.h provides block compression functions. It gives full buffer control to user. -+ Decompressing an lz4-compressed block also requires metadata (such as compressed size). -+ Each application is free to encode such metadata in whichever way it wants. -+ -+ An additional format, called LZ4 frame specification (doc/lz4_Frame_format.md), -+ take care of encoding standard metadata alongside LZ4-compressed blocks. -+ If your application requires interoperability, it's recommended to use it. -+ A library is provided to take care of it, see lz4frame.h. -+*/ -+ -+/*^*************************************************************** -+* Export parameters -+*****************************************************************/ -+/* -+* LZ4_DLL_EXPORT : -+* Enable exporting of functions when building a Windows DLL -+* LZ4LIB_API : -+* Control library symbols visibility. -+*/ -+#if defined(LZ4_DLL_EXPORT) && (LZ4_DLL_EXPORT==1) -+# define LZ4LIB_API __declspec(dllexport) -+#elif defined(LZ4_DLL_IMPORT) && (LZ4_DLL_IMPORT==1) -+# define LZ4LIB_API __declspec(dllimport) /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/ -+#elif defined(__GNUC__) && (__GNUC__ >= 4) -+# define LZ4LIB_API __attribute__ ((__visibility__ ("default"))) -+#else -+# define LZ4LIB_API -+#endif -+ -+ -+/*------ Version ------*/ -+#define LZ4_VERSION_MAJOR 1 /* for breaking interface changes */ -+#define LZ4_VERSION_MINOR 8 /* for new (non-breaking) interface capabilities */ - #define LZ4_VERSION_RELEASE 0 /* for tweaks, bug-fixes, or development */ - -+#define LZ4_VERSION_NUMBER (LZ4_VERSION_MAJOR *100*100 + LZ4_VERSION_MINOR *100 + LZ4_VERSION_RELEASE) - --/************************************** -- Tuning parameter -+#define LZ4_LIB_VERSION LZ4_VERSION_MAJOR.LZ4_VERSION_MINOR.LZ4_VERSION_RELEASE -+#define LZ4_QUOTE(str) #str -+#define LZ4_EXPAND_AND_QUOTE(str) LZ4_QUOTE(str) -+#define LZ4_VERSION_STRING LZ4_EXPAND_AND_QUOTE(LZ4_LIB_VERSION) -+ -+LZ4LIB_API int LZ4_versionNumber (void); /**< library version number; to be used when checking dll version */ -+LZ4LIB_API const char* LZ4_versionString (void); /**< library version string; to be used when checking dll version */ -+ -+ -+/*-************************************ -+* Tuning parameter - **************************************/ --/* -+/*! - * LZ4_MEMORY_USAGE : - * Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.) - * Increasing memory usage improves compression ratio - * Reduced memory usage can improve speed, due to cache effect - * Default value is 14, for 16KB, which nicely fits into Intel x86 L1 cache - */ --#define LZ4_MEMORY_USAGE 14 -- -+#ifndef LZ4_MEMORY_USAGE -+# define LZ4_MEMORY_USAGE 14 -+#endif - --/************************************** -- Simple Functions -+/*-************************************ -+* Simple Functions - **************************************/ -- --int LZ4_compress (const char* source, char* dest, int inputSize); --int LZ4_decompress_safe (const char* source, char* dest, int compressedSize, int maxOutputSize); -- --/* --LZ4_compress() : -- Compresses 'inputSize' bytes from 'source' into 'dest'. -- Destination buffer must be already allocated, -- and must be sized to handle worst cases situations (input data not compressible) -- Worst case size evaluation is provided by function LZ4_compressBound() -- inputSize : Max supported value is LZ4_MAX_INPUT_VALUE -- return : the number of bytes written in buffer dest -- or 0 if the compression fails -- --LZ4_decompress_safe() : -- compressedSize : is obviously the source size -- maxOutputSize : is the size of the destination buffer, which must be already allocated. -- return : the number of bytes decoded in the destination buffer (necessarily <= maxOutputSize) -- If the destination buffer is not large enough, decoding will stop and output an error code (<0). -+/*! LZ4_compress_default() : -+ Compresses 'sourceSize' bytes from buffer 'source' -+ into already allocated 'dest' buffer of size 'maxDestSize'. -+ Compression is guaranteed to succeed if 'maxDestSize' >= LZ4_compressBound(sourceSize). -+ It also runs faster, so it's a recommended setting. -+ If the function cannot compress 'source' into a more limited 'dest' budget, -+ compression stops *immediately*, and the function result is zero. -+ As a consequence, 'dest' content is not valid. -+ This function never writes outside 'dest' buffer, nor read outside 'source' buffer. -+ sourceSize : Max supported value is LZ4_MAX_INPUT_VALUE -+ maxDestSize : full or partial size of buffer 'dest' (which must be already allocated) -+ return : the number of bytes written into buffer 'dest' (necessarily <= maxOutputSize) -+ or 0 if compression fails */ -+LZ4LIB_API int LZ4_compress_default(const char* source, char* dest, int sourceSize, int maxDestSize); -+ -+/*! LZ4_decompress_safe() : -+ compressedSize : is the precise full size of the compressed block. -+ maxDecompressedSize : is the size of destination buffer, which must be already allocated. -+ return : the number of bytes decompressed into destination buffer (necessarily <= maxDecompressedSize) -+ If destination buffer is not large enough, decoding will stop and output an error code (<0). - If the source stream is detected malformed, the function will stop decoding and return a negative result. -- This function is protected against buffer overflow exploits : -- it never writes outside of output buffer, and never reads outside of input buffer. -- Therefore, it is protected against malicious data packets. --*/ -- -- --/* --Note : -- Should you prefer to explicitly allocate compression-table memory using your own allocation method, -- use the streaming functions provided below, simply reset the memory area between each call to LZ4_compress_continue() -+ This function is protected against buffer overflow exploits, including malicious data packets. -+ It never writes outside output buffer, nor reads outside input buffer. - */ -+LZ4LIB_API int LZ4_decompress_safe (const char* source, char* dest, int compressedSize, int maxDecompressedSize); - - --/************************************** -- Advanced Functions -+/*-************************************ -+* Advanced Functions - **************************************/ - #define LZ4_MAX_INPUT_SIZE 0x7E000000 /* 2 113 929 216 bytes */ --#define LZ4_COMPRESSBOUND(isize) ((unsigned int)(isize) > (unsigned int)LZ4_MAX_INPUT_SIZE ? 0 : (isize) + ((isize)/255) + 16) -+#define LZ4_COMPRESSBOUND(isize) ((unsigned)(isize) > (unsigned)LZ4_MAX_INPUT_SIZE ? 0 : (isize) + ((isize)/255) + 16) - --/* -+/*! - LZ4_compressBound() : -- Provides the maximum size that LZ4 may output in a "worst case" scenario (input data not compressible) -- primarily useful for memory allocation of output buffer. -- macro is also provided when result needs to be evaluated at compilation (such as stack memory allocation). -- -- isize : is the input size. Max supported value is LZ4_MAX_INPUT_SIZE -- return : maximum output size in a "worst case" scenario -- or 0, if input size is too large ( > LZ4_MAX_INPUT_SIZE) -+ Provides the maximum size that LZ4 compression may output in a "worst case" scenario (input data not compressible) -+ This function is primarily useful for memory allocation purposes (destination buffer size). -+ Macro LZ4_COMPRESSBOUND() is also provided for compilation-time evaluation (stack memory allocation for example). -+ Note that LZ4_compress_default() compress faster when dest buffer size is >= LZ4_compressBound(srcSize) -+ inputSize : max supported value is LZ4_MAX_INPUT_SIZE -+ return : maximum output size in a "worst case" scenario -+ or 0, if input size is too large ( > LZ4_MAX_INPUT_SIZE) -+*/ -+LZ4LIB_API int LZ4_compressBound(int inputSize); -+ -+/*! -+LZ4_compress_fast() : -+ Same as LZ4_compress_default(), but allows to select an "acceleration" factor. -+ The larger the acceleration value, the faster the algorithm, but also the lesser the compression. -+ It's a trade-off. It can be fine tuned, with each successive value providing roughly +~3% to speed. -+ An acceleration value of "1" is the same as regular LZ4_compress_default() -+ Values <= 0 will be replaced by ACCELERATION_DEFAULT (see lz4.c), which is 1. - */ --int LZ4_compressBound(int isize); -+LZ4LIB_API int LZ4_compress_fast (const char* source, char* dest, int sourceSize, int maxDestSize, int acceleration); - - --/* --LZ4_compress_limitedOutput() : -- Compress 'inputSize' bytes from 'source' into an output buffer 'dest' of maximum size 'maxOutputSize'. -- If it cannot achieve it, compression will stop, and result of the function will be zero. -- This function never writes outside of provided output buffer. -- -- inputSize : Max supported value is LZ4_MAX_INPUT_VALUE -- maxOutputSize : is the size of the destination buffer (which must be already allocated) -- return : the number of bytes written in buffer 'dest' -- or 0 if the compression fails -+/*! -+LZ4_compress_fast_extState() : -+ Same compression function, just using an externally allocated memory space to store compression state. -+ Use LZ4_sizeofState() to know how much memory must be allocated, -+ and allocate it on 8-bytes boundaries (using malloc() typically). -+ Then, provide it as 'void* state' to compression function. -+*/ -+LZ4LIB_API int LZ4_sizeofState(void); -+LZ4LIB_API int LZ4_compress_fast_extState (void* state, const char* source, char* dest, int inputSize, int maxDestSize, int acceleration); -+ -+ -+/*! -+LZ4_compress_destSize() : -+ Reverse the logic, by compressing as much data as possible from 'source' buffer -+ into already allocated buffer 'dest' of size 'targetDestSize'. -+ This function either compresses the entire 'source' content into 'dest' if it's large enough, -+ or fill 'dest' buffer completely with as much data as possible from 'source'. -+ *sourceSizePtr : will be modified to indicate how many bytes where read from 'source' to fill 'dest'. -+ New value is necessarily <= old value. -+ return : Nb bytes written into 'dest' (necessarily <= targetDestSize) -+ or 0 if compression fails - */ --int LZ4_compress_limitedOutput (const char* source, char* dest, int inputSize, int maxOutputSize); -+LZ4LIB_API int LZ4_compress_destSize (const char* source, char* dest, int* sourceSizePtr, int targetDestSize); - - --/* -+/*! - LZ4_decompress_fast() : - originalSize : is the original and therefore uncompressed size - return : the number of bytes read from the source buffer (in other words, the compressed size) -- If the source stream is malformed, the function will stop decoding and return a negative result. -+ If the source stream is detected malformed, the function will stop decoding and return a negative result. - Destination buffer must be already allocated. Its size must be a minimum of 'originalSize' bytes. -- note : This function is a bit faster than LZ4_decompress_safe() -- It provides fast decompression and fully respect memory boundaries for properly formed compressed data. -- It does not provide full protection against intentionnally modified data stream. -- Use this function in a trusted environment (data to decode comes from a trusted source). -+ note : This function fully respect memory boundaries for properly formed compressed data. -+ It is a bit faster than LZ4_decompress_safe(). -+ However, it does not provide any protection against intentionally modified data stream (malicious input). -+ Use this function in trusted environment only (data to decode comes from a trusted source). - */ --int LZ4_decompress_fast (const char* source, char* dest, int originalSize); -+LZ4LIB_API int LZ4_decompress_fast (const char* source, char* dest, int originalSize); - -- --/* -+/*! - LZ4_decompress_safe_partial() : - This function decompress a compressed block of size 'compressedSize' at position 'source' -- into output buffer 'dest' of size 'maxOutputSize'. -+ into destination buffer 'dest' of size 'maxDecompressedSize'. - The function tries to stop decompressing operation as soon as 'targetOutputSize' has been reached, - reducing decompression time. -- return : the number of bytes decoded in the destination buffer (necessarily <= maxOutputSize) -+ return : the number of bytes decoded in the destination buffer (necessarily <= maxDecompressedSize) - Note : this number can be < 'targetOutputSize' should the compressed block to decode be smaller. - Always control how many bytes were decoded. - If the source stream is detected malformed, the function will stop decoding and return a negative result. - This function never writes outside of output buffer, and never reads outside of input buffer. It is therefore protected against malicious data packets - */ --int LZ4_decompress_safe_partial (const char* source, char* dest, int compressedSize, int targetOutputSize, int maxOutputSize); -+LZ4LIB_API int LZ4_decompress_safe_partial (const char* source, char* dest, int compressedSize, int targetOutputSize, int maxDecompressedSize); - - --/*********************************************** -- Experimental Streaming Compression Functions -+/*-********************************************* -+* Streaming Compression Functions - ***********************************************/ -+typedef union LZ4_stream_u LZ4_stream_t; /* incomplete type (defined later) */ - --#define LZ4_STREAMSIZE_U32 ((1 << (LZ4_MEMORY_USAGE-2)) + 8) --#define LZ4_STREAMSIZE (LZ4_STREAMSIZE_U32 * sizeof(unsigned int)) --/* -- * LZ4_stream_t -- * information structure to track an LZ4 stream. -- * important : set this structure content to zero before first use ! -- */ --typedef struct { unsigned int table[LZ4_STREAMSIZE_U32]; } LZ4_stream_t; -- --/* -- * If you prefer dynamic allocation methods, -- * LZ4_createStream -- * provides a pointer (void*) towards an initialized LZ4_stream_t structure. -- * LZ4_free just frees it. -+/*! LZ4_createStream() and LZ4_freeStream() : -+ * LZ4_createStream() will allocate and initialize an `LZ4_stream_t` structure. -+ * LZ4_freeStream() releases its memory. - */ --void* LZ4_createStream(); --int LZ4_free (void* LZ4_stream); -- -+LZ4LIB_API LZ4_stream_t* LZ4_createStream(void); -+LZ4LIB_API int LZ4_freeStream (LZ4_stream_t* streamPtr); - --/* -- * LZ4_loadDict -- * Use this function to load a static dictionary into LZ4_stream. -- * Any previous data will be forgotten, only 'dictionary' will remain in memory. -- * Loading a size of 0 is allowed (same effect as init). -- * Return : 1 if OK, 0 if error -+/*! LZ4_resetStream() : -+ * An LZ4_stream_t structure can be allocated once and re-used multiple times. -+ * Use this function to init an allocated `LZ4_stream_t` structure and start a new compression. - */ --int LZ4_loadDict (void* LZ4_stream, const char* dictionary, int dictSize); -+LZ4LIB_API void LZ4_resetStream (LZ4_stream_t* streamPtr); - --/* -- * LZ4_compress_continue -- * Compress data block 'source', using blocks compressed before as dictionary to improve compression ratio -- * Previous data blocks are assumed to still be present at their previous location. -+/*! LZ4_loadDict() : -+ * Use this function to load a static dictionary into LZ4_stream. -+ * Any previous data will be forgotten, only 'dictionary' will remain in memory. -+ * Loading a size of 0 is allowed. -+ * Return : dictionary size, in bytes (necessarily <= 64 KB) - */ --int LZ4_compress_continue (void* LZ4_stream, const char* source, char* dest, int inputSize); -- --/* -- * LZ4_compress_limitedOutput_continue -- * Same as before, but also specify a maximum target compressed size (maxOutputSize) -- * If objective cannot be met, compression exits, and returns a zero. -+LZ4LIB_API int LZ4_loadDict (LZ4_stream_t* streamPtr, const char* dictionary, int dictSize); -+ -+/*! LZ4_compress_fast_continue() : -+ * Compress buffer content 'src', using data from previously compressed blocks as dictionary to improve compression ratio. -+ * Important : Previous data blocks are assumed to remain present and unmodified ! -+ * 'dst' buffer must be already allocated. -+ * If dstCapacity >= LZ4_compressBound(srcSize), compression is guaranteed to succeed, and runs faster. -+ * If not, and if compressed data cannot fit into 'dst' buffer size, compression stops, and function @return==0. -+ * After an error, the stream status is invalid, it can only be reset or freed. - */ --int LZ4_compress_limitedOutput_continue (void* LZ4_stream, const char* source, char* dest, int inputSize, int maxOutputSize); -+LZ4LIB_API int LZ4_compress_fast_continue (LZ4_stream_t* streamPtr, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); - --/* -- * LZ4_saveDict -- * If previously compressed data block is not guaranteed to remain at its previous memory location -- * save it into a safe place (char* safeBuffer) -- * Note : you don't need to call LZ4_loadDict() afterwards, -- * dictionary is immediately usable, you can therefore call again LZ4_compress_continue() -- * Return : 1 if OK, 0 if error -- * Note : any dictSize > 64 KB will be interpreted as 64KB. -+/*! LZ4_saveDict() : -+ * If previously compressed data block is not guaranteed to remain available at its current memory location, -+ * save it into a safer place (char* safeBuffer). -+ * Note : it's not necessary to call LZ4_loadDict() after LZ4_saveDict(), dictionary is immediately usable. -+ * @return : saved dictionary size in bytes (necessarily <= dictSize), or 0 if error. - */ --int LZ4_saveDict (void* LZ4_stream, char* safeBuffer, int dictSize); -+LZ4LIB_API int LZ4_saveDict (LZ4_stream_t* streamPtr, char* safeBuffer, int dictSize); - - --/************************************************ -- Experimental Streaming Decompression Functions -+/*-********************************************** -+* Streaming Decompression Functions -+* Bufferless synchronous API - ************************************************/ -+typedef union LZ4_streamDecode_u LZ4_streamDecode_t; /* incomplete type (defined later) */ - --#define LZ4_STREAMDECODESIZE_U32 4 --#define LZ4_STREAMDECODESIZE (LZ4_STREAMDECODESIZE_U32 * sizeof(unsigned int)) --/* -- * LZ4_streamDecode_t -- * information structure to track an LZ4 stream. -- * important : set this structure content to zero before first use ! -+/*! LZ4_createStreamDecode() and LZ4_freeStreamDecode() : -+ * creation / destruction of streaming decompression tracking structure */ -+LZ4LIB_API LZ4_streamDecode_t* LZ4_createStreamDecode(void); -+LZ4LIB_API int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream); -+ -+/*! LZ4_setStreamDecode() : -+ * Use this function to instruct where to find the dictionary. -+ * Setting a size of 0 is allowed (same effect as reset). -+ * @return : 1 if OK, 0 if error - */ --typedef struct { unsigned int table[LZ4_STREAMDECODESIZE_U32]; } LZ4_streamDecode_t; -+LZ4LIB_API int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize); -+ -+/*! LZ4_decompress_*_continue() : -+ * These decoding functions allow decompression of multiple blocks in "streaming" mode. -+ * Previously decoded blocks *must* remain available at the memory position where they were decoded (up to 64 KB) -+ * In the case of a ring buffers, decoding buffer must be either : -+ * - Exactly same size as encoding buffer, with same update rule (block boundaries at same positions) -+ * In which case, the decoding & encoding ring buffer can have any size, including very small ones ( < 64 KB). -+ * - Larger than encoding buffer, by a minimum of maxBlockSize more bytes. -+ * maxBlockSize is implementation dependent. It's the maximum size you intend to compress into a single block. -+ * In which case, encoding and decoding buffers do not need to be synchronized, -+ * and encoding ring buffer can have any size, including small ones ( < 64 KB). -+ * - _At least_ 64 KB + 8 bytes + maxBlockSize. -+ * In which case, encoding and decoding buffers do not need to be synchronized, -+ * and encoding ring buffer can have any size, including larger than decoding buffer. -+ * Whenever these conditions are not possible, save the last 64KB of decoded data into a safe buffer, -+ * and indicate where it is saved using LZ4_setStreamDecode() -+*/ -+LZ4LIB_API int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxDecompressedSize); -+LZ4LIB_API int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int originalSize); - --/* -- * If you prefer dynamic allocation methods, -- * LZ4_createStreamDecode() -- * provides a pointer (void*) towards an initialized LZ4_streamDecode_t structure. -- * LZ4_free just frees it. -+ -+/*! LZ4_decompress_*_usingDict() : -+ * These decoding functions work the same as -+ * a combination of LZ4_setStreamDecode() followed by LZ4_decompress_*_continue() -+ * They are stand-alone, and don't need an LZ4_streamDecode_t structure. - */ --void* LZ4_createStreamDecode(); --int LZ4_free (void* LZ4_stream); /* yes, it's the same one as for compression */ -+LZ4LIB_API int LZ4_decompress_safe_usingDict (const char* source, char* dest, int compressedSize, int maxDecompressedSize, const char* dictStart, int dictSize); -+LZ4LIB_API int LZ4_decompress_fast_usingDict (const char* source, char* dest, int originalSize, const char* dictStart, int dictSize); -+ -+ -+/*^********************************************** -+ * !!!!!! STATIC LINKING ONLY !!!!!! -+ ***********************************************/ -+/*-************************************ -+ * Private definitions -+ ************************************** -+ * Do not use these definitions. -+ * They are exposed to allow static allocation of `LZ4_stream_t` and `LZ4_streamDecode_t`. -+ * Using these definitions will expose code to API and/or ABI break in future versions of the library. -+ **************************************/ -+#define LZ4_HASHLOG (LZ4_MEMORY_USAGE-2) -+#define LZ4_HASHTABLESIZE (1 << LZ4_MEMORY_USAGE) -+#define LZ4_HASH_SIZE_U32 (1 << LZ4_HASHLOG) /* required as macro for static allocation */ -+ -+#if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) -+#include -+ -+typedef struct { -+ uint32_t hashTable[LZ4_HASH_SIZE_U32]; -+ uint32_t currentOffset; -+ uint32_t initCheck; -+ const uint8_t* dictionary; -+ uint8_t* bufferStart; /* obsolete, used for slideInputBuffer */ -+ uint32_t dictSize; -+} LZ4_stream_t_internal; -+ -+typedef struct { -+ const uint8_t* externalDict; -+ size_t extDictSize; -+ const uint8_t* prefixEnd; -+ size_t prefixSize; -+} LZ4_streamDecode_t_internal; -+ -+#else -+ -+typedef struct { -+ unsigned int hashTable[LZ4_HASH_SIZE_U32]; -+ unsigned int currentOffset; -+ unsigned int initCheck; -+ const unsigned char* dictionary; -+ unsigned char* bufferStart; /* obsolete, used for slideInputBuffer */ -+ unsigned int dictSize; -+} LZ4_stream_t_internal; -+ -+typedef struct { -+ const unsigned char* externalDict; -+ size_t extDictSize; -+ const unsigned char* prefixEnd; -+ size_t prefixSize; -+} LZ4_streamDecode_t_internal; - --/* --*_continue() : -- These decoding functions allow decompression of multiple blocks in "streaming" mode. -- Previously decoded blocks must still be available at the memory position where they were decoded. -- If it's not possible, save the relevant part of decoded data into a safe buffer, -- and indicate where it stands using LZ4_setDictDecode() --*/ --int LZ4_decompress_safe_continue (void* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxOutputSize); --int LZ4_decompress_fast_continue (void* LZ4_streamDecode, const char* source, char* dest, int originalSize); -+#endif - --/* -- * LZ4_setDictDecode -- * Use this function to instruct where to find the dictionary. -- * This function can be used to specify a static dictionary, -- * or to instruct where to find some previously decoded data saved into a different memory space. -- * Setting a size of 0 is allowed (same effect as no dictionary). -- * Return : 1 if OK, 0 if error -+/*! -+ * LZ4_stream_t : -+ * information structure to track an LZ4 stream. -+ * init this structure before first use. -+ * note : only use in association with static linking ! -+ * this definition is not API/ABI safe, -+ * it may change in a future version ! - */ --int LZ4_setDictDecode (void* LZ4_streamDecode, const char* dictionary, int dictSize); -+#define LZ4_STREAMSIZE_U64 ((1 << (LZ4_MEMORY_USAGE-3)) + 4) -+#define LZ4_STREAMSIZE (LZ4_STREAMSIZE_U64 * sizeof(unsigned long long)) -+union LZ4_stream_u { -+ unsigned long long table[LZ4_STREAMSIZE_U64]; -+ LZ4_stream_t_internal internal_donotuse; -+} ; /* previously typedef'd to LZ4_stream_t */ -+ -+ -+/*! -+ * LZ4_streamDecode_t : -+ * information structure to track an LZ4 stream during decompression. -+ * init this structure using LZ4_setStreamDecode (or memset()) before first use -+ * note : only use in association with static linking ! -+ * this definition is not API/ABI safe, -+ * and may change in a future version ! -+ */ -+#define LZ4_STREAMDECODESIZE_U64 4 -+#define LZ4_STREAMDECODESIZE (LZ4_STREAMDECODESIZE_U64 * sizeof(unsigned long long)) -+union LZ4_streamDecode_u { -+ unsigned long long table[LZ4_STREAMDECODESIZE_U64]; -+ LZ4_streamDecode_t_internal internal_donotuse; -+} ; /* previously typedef'd to LZ4_streamDecode_t */ - - --/* --Advanced decoding functions : --*_usingDict() : -- These decoding functions work the same as -- a combination of LZ4_setDictDecode() followed by LZ4_decompress_x_continue() -- all together into a single function call. -- It doesn't use nor update an LZ4_streamDecode_t structure. --*/ --int LZ4_decompress_safe_usingDict (const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize); --int LZ4_decompress_fast_usingDict (const char* source, char* dest, int originalSize, const char* dictStart, int dictSize); -+/*-************************************ -+* Obsolete Functions -+**************************************/ - -+/*! Deprecation warnings -+ Should deprecation warnings be a problem, -+ it is generally possible to disable them, -+ typically with -Wno-deprecated-declarations for gcc -+ or _CRT_SECURE_NO_WARNINGS in Visual. -+ Otherwise, it's also possible to define LZ4_DISABLE_DEPRECATE_WARNINGS */ -+#ifdef LZ4_DISABLE_DEPRECATE_WARNINGS -+# define LZ4_DEPRECATED(message) /* disable deprecation warnings */ -+#else -+# define LZ4_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) -+# if defined (__cplusplus) && (__cplusplus >= 201402) /* C++14 or greater */ -+# define LZ4_DEPRECATED(message) [[deprecated(message)]] -+# elif (LZ4_GCC_VERSION >= 405) || defined(__clang__) -+# define LZ4_DEPRECATED(message) __attribute__((deprecated(message))) -+# elif (LZ4_GCC_VERSION >= 301) -+# define LZ4_DEPRECATED(message) __attribute__((deprecated)) -+# elif defined(_MSC_VER) -+# define LZ4_DEPRECATED(message) __declspec(deprecated(message)) -+# else -+# pragma message("WARNING: You need to implement LZ4_DEPRECATED for this compiler") -+# define LZ4_DEPRECATED(message) -+# endif -+#endif /* LZ4_DISABLE_DEPRECATE_WARNINGS */ -+ -+/* Obsolete compression functions */ -+LZ4LIB_API LZ4_DEPRECATED("use LZ4_compress_default() instead") int LZ4_compress (const char* source, char* dest, int sourceSize); -+LZ4LIB_API LZ4_DEPRECATED("use LZ4_compress_default() instead") int LZ4_compress_limitedOutput (const char* source, char* dest, int sourceSize, int maxOutputSize); -+LZ4LIB_API LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") int LZ4_compress_withState (void* state, const char* source, char* dest, int inputSize); -+LZ4LIB_API LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") int LZ4_compress_limitedOutput_withState (void* state, const char* source, char* dest, int inputSize, int maxOutputSize); -+LZ4LIB_API LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") int LZ4_compress_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize); -+LZ4LIB_API LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize, int maxOutputSize); -+ -+/* Obsolete decompression functions */ -+LZ4LIB_API LZ4_DEPRECATED("use LZ4_decompress_fast() instead") int LZ4_uncompress (const char* source, char* dest, int outputSize); -+LZ4LIB_API LZ4_DEPRECATED("use LZ4_decompress_safe() instead") int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize); -+ -+/* Obsolete streaming functions; use new streaming interface whenever possible */ -+LZ4LIB_API LZ4_DEPRECATED("use LZ4_createStream() instead") void* LZ4_create (char* inputBuffer); -+LZ4LIB_API LZ4_DEPRECATED("use LZ4_createStream() instead") int LZ4_sizeofStreamState(void); -+LZ4LIB_API LZ4_DEPRECATED("use LZ4_resetStream() instead") int LZ4_resetStreamState(void* state, char* inputBuffer); -+LZ4LIB_API LZ4_DEPRECATED("use LZ4_saveDict() instead") char* LZ4_slideInputBuffer (void* state); -+ -+/* Obsolete streaming decoding functions */ -+LZ4LIB_API LZ4_DEPRECATED("use LZ4_decompress_safe_usingDict() instead") int LZ4_decompress_safe_withPrefix64k (const char* src, char* dst, int compressedSize, int maxDstSize); -+LZ4LIB_API LZ4_DEPRECATED("use LZ4_decompress_fast_usingDict() instead") int LZ4_decompress_fast_withPrefix64k (const char* src, char* dst, int originalSize); -+ -+#endif /* LZ4_H_2983827168210 */ - - - #if defined (__cplusplus) diff --git a/www/waterfox/files/patch-bug1398539 b/www/waterfox/files/patch-bug1398539 deleted file mode 100644 index 1ae235da8b41..000000000000 --- a/www/waterfox/files/patch-bug1398539 +++ /dev/null @@ -1,159 +0,0 @@ -commit 8b33a0a29e7e -Author: Lee Bousfield -Date: Wed Sep 13 18:28:51 2017 -0600 - - Bug 1398539: Inhibit screensaver with XScreenSaverSuspend r=karlt - - MozReview-Commit-ID: LhhpaDaPdaO - - --HG-- - extra : rebase_source : 6d53031ea8669b15cdf6fad4c55c58624bd54c38 ---- - widget/gtk/WakeLockListener.cpp | 91 ++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 90 insertions(+), 1 deletion(-) - -diff --git widget/gtk/WakeLockListener.cpp widget/gtk/WakeLockListener.cpp -index 3c6d7fb186a3..93d2c5a16208 100644 ---- widget/gtk/WakeLockListener.cpp -+++ widget/gtk/WakeLockListener.cpp -@@ -15,6 +15,10 @@ - #include "mozilla/ipc/DBusMessageRefPtr.h" - #include "mozilla/ipc/DBusPendingCallRefPtr.h" - -+#if defined(MOZ_X11) -+#include "prlink.h" -+#endif -+ - #define FREEDESKTOP_SCREENSAVER_TARGET "org.freedesktop.ScreenSaver" - #define FREEDESKTOP_SCREENSAVER_OBJECT "/ScreenSaver" - #define FREEDESKTOP_SCREENSAVER_INTERFACE "org.freedesktop.ScreenSaver" -@@ -32,6 +36,9 @@ StaticRefPtr WakeLockListener::sSingleton; - enum DesktopEnvironment { - FreeDesktop, - GNOME, -+#if defined(MOZ_X11) -+ XScreenSaver, -+#endif - Unsupported, - }; - -@@ -59,6 +66,11 @@ private: - bool SendGNOMEInhibitMessage(); - bool SendMessage(DBusMessage* aMessage); - -+#if defined(MOZ_X11) -+ static bool CheckXScreenSaverSupport(); -+ static bool InhibitXScreenSaver(bool inhibit); -+#endif -+ - static void ReceiveInhibitReply(DBusPendingCall* aPending, void* aUserData); - void InhibitFailed(); - void InhibitSucceeded(uint32_t aInhibitRequest); -@@ -143,6 +155,71 @@ WakeLockTopic::SendGNOMEInhibitMessage() - } - - -+#if defined(MOZ_X11) -+ -+typedef Bool (*_XScreenSaverQueryExtension_fn)(Display* dpy, int* event_base, -+ int* error_base); -+typedef Bool (*_XScreenSaverQueryVersion_fn)(Display* dpy, int* major, -+ int* minor); -+typedef void (*_XScreenSaverSuspend_fn)(Display* dpy, Bool suspend); -+ -+static PRLibrary* sXssLib = nullptr; -+static _XScreenSaverQueryExtension_fn _XSSQueryExtension = nullptr; -+static _XScreenSaverQueryVersion_fn _XSSQueryVersion = nullptr; -+static _XScreenSaverSuspend_fn _XSSSuspend = nullptr; -+ -+/* static */ bool -+WakeLockTopic::CheckXScreenSaverSupport() -+{ -+ if (!sXssLib) { -+ sXssLib = PR_LoadLibrary("libXss.so.1"); -+ if (!sXssLib) { -+ return false; -+ } -+ } -+ -+ _XSSQueryExtension = (_XScreenSaverQueryExtension_fn) -+ PR_FindFunctionSymbol(sXssLib, "XScreenSaverQueryExtension"); -+ _XSSQueryVersion = (_XScreenSaverQueryVersion_fn) -+ PR_FindFunctionSymbol(sXssLib, "XScreenSaverQueryVersion"); -+ _XSSSuspend = (_XScreenSaverSuspend_fn) -+ PR_FindFunctionSymbol(sXssLib, "XScreenSaverSuspend"); -+ if (!_XSSQueryExtension || !_XSSQueryVersion || !_XSSSuspend) { -+ return false; -+ } -+ -+ GdkDisplay* gDisplay = gdk_display_get_default(); -+ if (!GDK_IS_X11_DISPLAY(gDisplay)) return false; -+ Display* display = GDK_DISPLAY_XDISPLAY(gDisplay); -+ -+ int throwaway; -+ if (!_XSSQueryExtension(display, &throwaway, &throwaway)) return false; -+ -+ int major, minor; -+ if (!_XSSQueryVersion(display, &major, &minor)) return false; -+ // Needs to be compatible with version 1.1 -+ if (major != 1) return false; -+ if (minor < 1) return false; -+ -+ return true; -+} -+ -+/* static */ bool -+WakeLockTopic::InhibitXScreenSaver(bool inhibit) -+{ -+ // Should only be called if CheckXScreenSaverSupport returns true. -+ // There's a couple of safety checks here nonetheless. -+ if (!_XSSSuspend) return false; -+ GdkDisplay* gDisplay = gdk_display_get_default(); -+ if (!GDK_IS_X11_DISPLAY(gDisplay)) return false; -+ Display* display = GDK_DISPLAY_XDISPLAY(gDisplay); -+ _XSSSuspend(display, inhibit); -+ return true; -+} -+ -+#endif -+ -+ - bool - WakeLockTopic::SendInhibit() - { -@@ -156,6 +233,10 @@ WakeLockTopic::SendInhibit() - case GNOME: - sendOk = SendGNOMEInhibitMessage(); - break; -+#if defined(MOZ_X11) -+ case XScreenSaver: -+ return InhibitXScreenSaver(true); -+#endif - case Unsupported: - return false; - } -@@ -185,6 +266,11 @@ WakeLockTopic::SendUninhibit() - SESSION_MANAGER_INTERFACE, - "Uninhibit")); - } -+#if defined(MOZ_X11) -+ else if (mDesktopEnvironment == XScreenSaver) { -+ return InhibitXScreenSaver(false); -+ } -+#endif - - if (!message) { - return false; -@@ -249,8 +335,11 @@ WakeLockTopic::InhibitFailed() - - if (mDesktopEnvironment == FreeDesktop) { - mDesktopEnvironment = GNOME; -+#if defined(MOZ_X11) -+ } else if (mDesktopEnvironment == GNOME && CheckXScreenSaverSupport()) { -+ mDesktopEnvironment = XScreenSaver; -+#endif - } else { -- NS_ASSERTION(mDesktopEnvironment == GNOME, "Unknown desktop environment"); - mDesktopEnvironment = Unsupported; - mShouldInhibit = false; - } diff --git a/www/waterfox/files/patch-bug1398581 b/www/waterfox/files/patch-bug1398581 deleted file mode 100644 index 36845cb0a1a4..000000000000 --- a/www/waterfox/files/patch-bug1398581 +++ /dev/null @@ -1,125 +0,0 @@ -commit 762a3ec064d0 -Author: Emilio Cobos Álvarez -Date: Mon Sep 11 09:51:30 2017 +0200 - - Bug 1398581: Ensure a first-letter doesn't incorrectly inherit from a first-line. r=heycam - - This approach kinda sucks, because we woefully throw away the style context - computed in the case it inherited from a first-line, but it's the easiest thing - I could think of without either making it more inefficient, or threading a - parent style ignoring first-line through ResolvePseudoElementStyle and related - functions. - - MozReview-Commit-ID: 3uGuU7dHEnE ---- - layout/base/nsCSSFrameConstructor.cpp | 20 +++++++++++++++++--- - 1 file changed, 17 insertions(+), 3 deletions(-) - -diff --git layout/base/nsCSSFrameConstructor.cpp layout/base/nsCSSFrameConstructor.cpp -index 76d97a32ee4d..b668a837e2f3 100644 ---- layout/base/nsCSSFrameConstructor.cpp -+++ layout/base/nsCSSFrameConstructor.cpp -@@ -11861,10 +11861,11 @@ nsCSSFrameConstructor::CreateLetterFrame(nsContainerFrame* aBlockFrame, - - // Get style context for the first-letter-frame. Keep this in sync with - // nsBlockFrame::UpdatePseudoElementStyles. -- nsStyleContext* parentStyleContext = -+ nsIFrame* parentFrame = - nsFrame::CorrectStyleParentFrame(aParentFrame, -- nsCSSPseudoElements::firstLetter)-> -- StyleContext(); -+ nsCSSPseudoElements::firstLetter); -+ -+ nsStyleContext* parentStyleContext = parentFrame->StyleContext(); - - // Use content from containing block so that we can actually - // find a matching style rule. -@@ -11873,7 +11874,20 @@ nsCSSFrameConstructor::CreateLetterFrame(nsContainerFrame* aBlockFrame, - // Create first-letter style rule - RefPtr sc = - GetFirstLetterStyle(blockContent, parentStyleContext); -+ - if (sc) { -+ if (sc->IsServo() && parentFrame->IsLineFrame()) { -+ ServoStyleContext* parentStyleIgnoringFirstLine = -+ aBlockFrame->StyleContext()->AsServo(); -+ sc = -+ mPresShell->StyleSet()->AsServo()->ReparentStyleContext( -+ sc->AsServo(), -+ parentStyleContext->AsServo(), -+ parentStyleIgnoringFirstLine, -+ parentStyleIgnoringFirstLine, -+ blockContent->AsElement()); -+ } -+ - RefPtr textSC = mPresShell->StyleSet()-> - ResolveStyleForText(aTextContent, sc); - -commit 2a9742d4b68a -Author: Emilio Cobos Álvarez -Date: Mon Sep 11 17:19:05 2017 +0200 - - Bug 1398581: Address followup comments. r=me - - MozReview-Commit-ID: CymOOl4VLPj ---- - layout/base/nsCSSFrameConstructor.cpp | 15 +-------------- - 1 file changed, 1 insertion(+), 14 deletions(-) - -diff --git layout/base/nsCSSFrameConstructor.cpp layout/base/nsCSSFrameConstructor.cpp -index b668a837e2f3..bd3d406f664f 100644 ---- layout/base/nsCSSFrameConstructor.cpp -+++ layout/base/nsCSSFrameConstructor.cpp -@@ -11884,7 +11884,7 @@ nsCSSFrameConstructor::CreateLetterFrame(nsContainerFrame* aBlockFrame, - sc->AsServo(), - parentStyleContext->AsServo(), - parentStyleIgnoringFirstLine, -- parentStyleIgnoringFirstLine, -+ parentStyleContext->AsServo(), - blockContent->AsElement()); - } - -commit 9a42394a1f71 -Author: Emilio Cobos Álvarez -Date: Mon Sep 11 17:19:30 2017 +0200 - - Bug 1398581: Crashtest. r=me - - MozReview-Commit-ID: 5xy5aeDWU12 ---- - layout/style/crashtests/1398581.html | 17 +++++++++++++++++ - layout/style/crashtests/crashtests.list | 1 + - 2 files changed, 18 insertions(+) - -diff --git layout/style/crashtests/1398581.html layout/style/crashtests/1398581.html -new file mode 100644 -index 000000000000..e056ab44d55c ---- /dev/null -+++ layout/style/crashtests/1398581.html -@@ -0,0 +1,17 @@ -+ -+ -diff --git layout/style/crashtests/crashtests.list layout/style/crashtests/crashtests.list -index a32d48fa3299..719bdaf8328a 100644 ---- layout/style/crashtests/crashtests.list -+++ layout/style/crashtests/crashtests.list -@@ -201,3 +201,4 @@ load 1384824-2.html - load 1387481-1.html - load 1387499.html - load 1391577.html -+load 1398581.html diff --git a/www/waterfox/files/patch-bug1398806 b/www/waterfox/files/patch-bug1398806 deleted file mode 100644 index ecb7d12aefce..000000000000 --- a/www/waterfox/files/patch-bug1398806 +++ /dev/null @@ -1,438 +0,0 @@ -commit 95d5501cd96b -Author: Robert Longson -Date: Tue Oct 10 07:58:34 2017 +0100 - - Bug 1398806 - GetCtx and GetNearestViewport should return the nearest svg or symbol element which is now an SVGViewportElement rather than only returning the nearest svg element because a symbol establishes a viewport too. r=dholbert, a=ritu - - --HG-- - extra : source : 813d4e250712d296eb4b11b0b89e10ed6a94e3d4 ---- - dom/svg/SVGContentUtils.cpp | 12 ++++++---- - dom/svg/SVGContentUtils.h | 5 ++-- - dom/svg/SVGLength.cpp | 2 +- - dom/svg/SVGMarkerElement.cpp | 2 +- - dom/svg/SVGMarkerElement.h | 4 ++-- - dom/svg/SVGSVGElement.h | 9 ------- - dom/svg/SVGViewportElement.h | 9 +++++++ - dom/svg/nsSVGElement.cpp | 34 +++++++++++++-------------- - dom/svg/nsSVGElement.h | 3 ++- - layout/base/nsLayoutUtils.cpp | 4 ++-- - layout/reftests/svg/reftest.list | 1 + - layout/reftests/svg/viewBox-and-symbol-01.svg | 14 +++++++++++ - layout/svg/nsCSSClipPathInstance.cpp | 1 - - layout/svg/nsSVGImageFrame.cpp | 1 - - layout/svg/nsSVGImageFrame.h | 1 - - layout/svg/nsSVGMarkerFrame.cpp | 4 ++-- - layout/svg/nsSVGMarkerFrame.h | 4 ++-- - layout/svg/nsSVGPatternFrame.cpp | 2 +- - layout/svg/nsSVGUtils.cpp | 6 ++--- - 19 files changed, 68 insertions(+), 50 deletions(-) - -diff --git dom/svg/SVGContentUtils.cpp dom/svg/SVGContentUtils.cpp -index 0f744ffd8dd1..a6bf6245e95e 100644 ---- dom/svg/SVGContentUtils.cpp -+++ dom/svg/SVGContentUtils.cpp -@@ -374,8 +374,8 @@ SVGContentUtils::EstablishesViewport(nsIContent *aContent) - nsGkAtoms::symbol); - } - --nsSVGElement* --SVGContentUtils::GetNearestViewportElement(nsIContent *aContent) -+SVGViewportElement* -+SVGContentUtils::GetNearestViewportElement(const nsIContent *aContent) - { - nsIContent *element = aContent->GetFlattenedTreeParent(); - -@@ -384,7 +384,11 @@ SVGContentUtils::GetNearestViewportElement(nsIContent *aContent) - if (element->IsSVGElement(nsGkAtoms::foreignObject)) { - return nullptr; - } -- return static_cast(element); -+ MOZ_ASSERT(element->IsAnyOfSVGElements(nsGkAtoms::svg, -+ nsGkAtoms::symbol), -+ "upcoming static_cast is only valid for " -+ "SVGViewportElement subclasses"); -+ return static_cast(element); - } - element = element->GetFlattenedTreeParent(); - } -@@ -828,7 +832,7 @@ SVGContentUtils::CoordToFloat(nsSVGElement *aContent, - return nsPresContext::AppUnitsToFloatCSSPixels(aCoord.GetCoordValue()); - - case eStyleUnit_Percent: { -- SVGSVGElement* ctx = aContent->GetCtx(); -+ SVGViewportElement* ctx = aContent->GetCtx(); - return ctx ? aCoord.GetPercentValue() * ctx->GetLength(SVGContentUtils::XY) : 0.0f; - } - default: -diff --git dom/svg/SVGContentUtils.h dom/svg/SVGContentUtils.h -index 36c74f47d75a..8ec309daf6f8 100644 ---- dom/svg/SVGContentUtils.h -+++ dom/svg/SVGContentUtils.h -@@ -32,6 +32,7 @@ class SVGPreserveAspectRatio; - namespace dom { - class Element; - class SVGSVGElement; -+class SVGViewportElement; - } // namespace dom - - } // namespace mozilla -@@ -238,8 +239,8 @@ public: - */ - static bool EstablishesViewport(nsIContent *aContent); - -- static nsSVGElement* -- GetNearestViewportElement(nsIContent *aContent); -+ static mozilla::dom::SVGViewportElement* -+ GetNearestViewportElement(const nsIContent *aContent); - - /* enum for specifying coordinate direction for ObjectSpace/UserSpace */ - enum ctxDirection { X, Y, XY }; -diff --git dom/svg/SVGLength.cpp dom/svg/SVGLength.cpp -index 6c13e2e8d1a0..cecbbc8f5b40 100644 ---- dom/svg/SVGLength.cpp -+++ dom/svg/SVGLength.cpp -@@ -177,7 +177,7 @@ SVGLength::GetUserUnitsPerUnit(const nsSVGElement *aElement, uint8_t aAxis) cons - SVGLength::GetUserUnitsPerPercent(const nsSVGElement *aElement, uint8_t aAxis) - { - if (aElement) { -- dom::SVGSVGElement *viewportElement = aElement->GetCtx(); -+ dom::SVGViewportElement *viewportElement = aElement->GetCtx(); - if (viewportElement) { - return std::max(viewportElement->GetLength(aAxis) / 100.0f, 0.0f); - } -diff --git dom/svg/SVGMarkerElement.cpp dom/svg/SVGMarkerElement.cpp -index 9b0b2fcfab1e..c4cf29ae274f 100644 ---- dom/svg/SVGMarkerElement.cpp -+++ dom/svg/SVGMarkerElement.cpp -@@ -250,7 +250,7 @@ SVGMarkerElement::UnsetAttr(int32_t aNamespaceID, nsIAtom* aName, - // nsSVGElement methods - - void --SVGMarkerElement::SetParentCoordCtxProvider(SVGSVGElement *aContext) -+SVGMarkerElement::SetParentCoordCtxProvider(SVGViewportElement *aContext) - { - mCoordCtx = aContext; - mViewBoxToViewportTransform = nullptr; -diff --git dom/svg/SVGMarkerElement.h dom/svg/SVGMarkerElement.h -index 5d32de840b7a..ae08885c646e 100644 ---- dom/svg/SVGMarkerElement.h -+++ dom/svg/SVGMarkerElement.h -@@ -153,7 +153,7 @@ protected: - const nsAString& aValue, - nsAttrValue& aResult) override; - -- void SetParentCoordCtxProvider(SVGSVGElement *aContext); -+ void SetParentCoordCtxProvider(SVGViewportElement *aContext); - - virtual LengthAttributesInfo GetLengthInfo() override; - virtual AngleAttributesInfo GetAngleInfo() override; -@@ -180,7 +180,7 @@ protected: - // derived properties (from 'orient') handled separately - nsSVGOrientType mOrientType; - -- SVGSVGElement *mCoordCtx; -+ SVGViewportElement* mCoordCtx; - nsAutoPtr mViewBoxToViewportTransform; - }; - -diff --git dom/svg/SVGSVGElement.h dom/svg/SVGSVGElement.h -index fc3d7f3b55c5..431d70da2bef 100644 ---- dom/svg/SVGSVGElement.h -+++ dom/svg/SVGSVGElement.h -@@ -182,15 +182,6 @@ public: - // SVG-as-an-image documents.) - virtual void FlushImageTransformInvalidation(); - -- svgFloatSize GetViewportSize() const { -- return svgFloatSize(mViewportWidth, mViewportHeight); -- } -- -- void SetViewportSize(const svgFloatSize& aSize) { -- mViewportWidth = aSize.width; -- mViewportHeight = aSize.height; -- } -- - private: - // SVGViewportElement methods: - -diff --git dom/svg/SVGViewportElement.h dom/svg/SVGViewportElement.h -index fbc866e6a8d2..202797785131 100644 ---- dom/svg/SVGViewportElement.h -+++ dom/svg/SVGViewportElement.h -@@ -127,6 +127,15 @@ public: - - gfx::Matrix GetViewBoxTransform() const; - -+ svgFloatSize GetViewportSize() const { -+ return svgFloatSize(mViewportWidth, mViewportHeight); -+ } -+ -+ void SetViewportSize(const svgFloatSize& aSize) { -+ mViewportWidth = aSize.width; -+ mViewportHeight = aSize.height; -+ } -+ - // WebIDL - already_AddRefed ViewBox(); - already_AddRefed PreserveAspectRatio(); -diff --git dom/svg/nsSVGElement.cpp dom/svg/nsSVGElement.cpp -index 8757150c5925..a8aaa2fb5274 100644 ---- dom/svg/nsSVGElement.cpp -+++ dom/svg/nsSVGElement.cpp -@@ -1107,7 +1107,20 @@ nsSVGElement::GetOwnerSVGElement(nsIDOMSVGElement * *aOwnerSVGElement) - SVGSVGElement* - nsSVGElement::GetOwnerSVGElement() - { -- return GetCtx(); // this may return nullptr -+ nsIContent* ancestor = GetFlattenedTreeParent(); -+ -+ while (ancestor && ancestor->IsSVGElement()) { -+ if (ancestor->IsSVGElement(nsGkAtoms::foreignObject)) { -+ return nullptr; -+ } -+ if (ancestor->IsSVGElement(nsGkAtoms::svg)) { -+ return static_cast(ancestor); -+ } -+ ancestor = ancestor->GetFlattenedTreeParent(); -+ } -+ -+ // we don't have an ancestor element... -+ return nullptr; - } - - NS_IMETHODIMP -@@ -1543,23 +1556,10 @@ nsIAtom* nsSVGElement::GetEventNameForAttr(nsIAtom* aAttr) - return aAttr; - } - --SVGSVGElement * -+SVGViewportElement * - nsSVGElement::GetCtx() const - { -- nsIContent* ancestor = GetFlattenedTreeParent(); -- -- while (ancestor && ancestor->IsSVGElement()) { -- if (ancestor->IsSVGElement(nsGkAtoms::foreignObject)) { -- return nullptr; -- } -- if (ancestor->IsSVGElement(nsGkAtoms::svg)) { -- return static_cast(ancestor); -- } -- ancestor = ancestor->GetFlattenedTreeParent(); -- } -- -- // we don't have an ancestor element... -- return nullptr; -+ return SVGContentUtils::GetNearestViewportElement(this); - } - - /* virtual */ gfxMatrix -@@ -1658,7 +1658,7 @@ nsSVGElement::GetAnimatedLengthValues(float *aFirst, ...) - NS_ASSERTION(info.mLengthCount > 0, - "GetAnimatedLengthValues on element with no length attribs"); - -- SVGSVGElement *ctx = nullptr; -+ SVGViewportElement *ctx = nullptr; - - float *f = aFirst; - uint32_t i = 0; -diff --git dom/svg/nsSVGElement.h dom/svg/nsSVGElement.h -index 28c46188d4e4..955a327561d3 100644 ---- dom/svg/nsSVGElement.h -+++ dom/svg/nsSVGElement.h -@@ -44,6 +44,7 @@ class DeclarationBlock; - - namespace dom { - class SVGSVGElement; -+class SVGViewportElement; - - static const unsigned short SVG_UNIT_TYPE_UNKNOWN = 0; - static const unsigned short SVG_UNIT_TYPE_USERSPACEONUSE = 1; -@@ -145,7 +146,7 @@ public: - // Gets the element that establishes the rectangular viewport against which - // we should resolve percentage lengths (our "coordinate context"). Returns - // nullptr for outer or SVG without an parent (invalid SVG). -- mozilla::dom::SVGSVGElement* GetCtx() const; -+ mozilla::dom::SVGViewportElement* GetCtx() const; - - /** - * Returns aMatrix pre-multiplied by (explicit or implicit) transforms that -diff --git layout/base/nsLayoutUtils.cpp layout/base/nsLayoutUtils.cpp -index f5ca2719e333..7f3f5354befc 100644 ---- layout/base/nsLayoutUtils.cpp -+++ layout/base/nsLayoutUtils.cpp -@@ -120,7 +120,7 @@ - #include "mozilla/StyleSetHandle.h" - #include "mozilla/StyleSetHandleInlines.h" - #include "RegionBuilder.h" --#include "SVGSVGElement.h" -+#include "SVGViewportElement.h" - #include "DisplayItemClip.h" - #include "mozilla/layers/WebRenderLayerManager.h" - #include "prenv.h" -@@ -9479,7 +9479,7 @@ ComputeSVGReferenceRect(nsIFrame* aFrame, - case StyleGeometryBox::ViewBox: { - nsIContent* content = aFrame->GetContent(); - nsSVGElement* element = static_cast(content); -- SVGSVGElement* svgElement = element->GetCtx(); -+ SVGViewportElement* svgElement = element->GetCtx(); - MOZ_ASSERT(svgElement); - - if (svgElement && svgElement->HasViewBoxRect()) { -diff --git layout/reftests/svg/reftest.list layout/reftests/svg/reftest.list -index 2d3981f0b65e..0b96144724bb 100644 ---- layout/reftests/svg/reftest.list -+++ layout/reftests/svg/reftest.list -@@ -532,6 +532,7 @@ fuzzy-if(skiaContent,1,100) == tspan-xy-anchor-end-01.svg tspan-xy-anchor-end-re - == viewBox-and-pattern-02.svg pass.svg - == viewBox-and-pattern-03.svg pass.svg - == viewBox-and-pattern-04.svg pass.svg -+== viewBox-and-symbol-01.svg pass.svg - == viewBox-invalid-01.svg pass.svg - == viewBox-invalid-02.svg pass.svg - == viewBox-valid-01.svg pass.svg -diff --git layout/reftests/svg/viewBox-and-symbol-01.svg layout/reftests/svg/viewBox-and-symbol-01.svg -new file mode 100644 -index 000000000000..5c8ebf7bc3ea ---- /dev/null -+++ layout/reftests/svg/viewBox-and-symbol-01.svg -@@ -0,0 +1,14 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git layout/svg/nsCSSClipPathInstance.cpp layout/svg/nsCSSClipPathInstance.cpp -index 09d3530c4ef0..0c25f7a21bb8 100644 ---- layout/svg/nsCSSClipPathInstance.cpp -+++ layout/svg/nsCSSClipPathInstance.cpp -@@ -9,7 +9,6 @@ - #include "gfx2DGlue.h" - #include "gfxContext.h" - #include "gfxPlatform.h" --#include "mozilla/dom/SVGSVGElement.h" - #include "mozilla/gfx/2D.h" - #include "mozilla/gfx/PathHelpers.h" - #include "mozilla/ShapeUtils.h" -diff --git layout/svg/nsSVGImageFrame.cpp layout/svg/nsSVGImageFrame.cpp -index 074415854667..21834954721d 100644 ---- layout/svg/nsSVGImageFrame.cpp -+++ layout/svg/nsSVGImageFrame.cpp -@@ -16,7 +16,6 @@ - #include "nsLayoutUtils.h" - #include "imgINotificationObserver.h" - #include "nsSVGEffects.h" --#include "mozilla/dom/SVGSVGElement.h" - #include "nsSVGUtils.h" - #include "SVGContentUtils.h" - #include "SVGGeometryFrame.h" -diff --git layout/svg/nsSVGImageFrame.h layout/svg/nsSVGImageFrame.h -index b2c90fd6402d..fe0ac33ac02a 100644 ---- layout/svg/nsSVGImageFrame.h -+++ layout/svg/nsSVGImageFrame.h -@@ -17,7 +17,6 @@ - #include "nsLayoutUtils.h" - #include "imgINotificationObserver.h" - #include "nsSVGEffects.h" --#include "mozilla/dom/SVGSVGElement.h" - #include "nsSVGUtils.h" - #include "SVGContentUtils.h" - #include "SVGGeometryFrame.h" -diff --git layout/svg/nsSVGMarkerFrame.cpp layout/svg/nsSVGMarkerFrame.cpp -index dbeb02ea5b2d..365a0aa70a26 100644 ---- layout/svg/nsSVGMarkerFrame.cpp -+++ layout/svg/nsSVGMarkerFrame.cpp -@@ -194,7 +194,7 @@ nsSVGMarkerFrame::GetMarkBBoxContribution(const Matrix& aToBBoxUserspace, - } - - void --nsSVGMarkerFrame::SetParentCoordCtxProvider(SVGSVGElement *aContext) -+nsSVGMarkerFrame::SetParentCoordCtxProvider(SVGViewportElement *aContext) - { - SVGMarkerElement *marker = static_cast(mContent); - marker->SetParentCoordCtxProvider(aContext); -@@ -219,7 +219,7 @@ nsSVGMarkerFrame::AutoMarkerReferencer::AutoMarkerReferencer( - mFrame->mInUse = true; - mFrame->mMarkedFrame = aMarkedFrame; - -- SVGSVGElement *ctx = -+ SVGViewportElement *ctx = - static_cast(aMarkedFrame->GetContent())->GetCtx(); - mFrame->SetParentCoordCtxProvider(ctx); - } -diff --git layout/svg/nsSVGMarkerFrame.h layout/svg/nsSVGMarkerFrame.h -index 95415e6dcc21..03099eab9324 100644 ---- layout/svg/nsSVGMarkerFrame.h -+++ layout/svg/nsSVGMarkerFrame.h -@@ -20,7 +20,7 @@ class gfxContext; - namespace mozilla { - class SVGGeometryFrame; - namespace dom { --class SVGSVGElement; -+class SVGViewportElement; - } // namespace dom - } // namespace mozilla - -@@ -119,7 +119,7 @@ private: - }; - - // nsSVGMarkerFrame methods: -- void SetParentCoordCtxProvider(mozilla::dom::SVGSVGElement *aContext); -+ void SetParentCoordCtxProvider(mozilla::dom::SVGViewportElement *aContext); - - // recursion prevention flag - bool mInUse; -diff --git layout/svg/nsSVGPatternFrame.cpp layout/svg/nsSVGPatternFrame.cpp -index 488ac2f5c783..5078fb1b5a31 100644 ---- layout/svg/nsSVGPatternFrame.cpp -+++ layout/svg/nsSVGPatternFrame.cpp -@@ -660,7 +660,7 @@ nsSVGPatternFrame::ConstructCTM(const nsSVGViewBox& aViewBox, - const Matrix &callerCTM, - nsIFrame *aTarget) - { -- SVGSVGElement *ctx = nullptr; -+ SVGViewportElement *ctx = nullptr; - nsIContent* targetContent = aTarget->GetContent(); - gfxFloat scaleX, scaleY; - -diff --git layout/svg/nsSVGUtils.cpp layout/svg/nsSVGUtils.cpp -index d53a3ede0be7..f21c23491285 100644 ---- layout/svg/nsSVGUtils.cpp -+++ layout/svg/nsSVGUtils.cpp -@@ -49,7 +49,7 @@ - #include "SVGGeometryElement.h" - #include "SVGGeometryFrame.h" - #include "nsSVGPaintServerFrame.h" --#include "mozilla/dom/SVGSVGElement.h" -+#include "mozilla/dom/SVGViewportElement.h" - #include "nsTextFrame.h" - #include "SVGContentUtils.h" - #include "SVGTextFrame.h" -@@ -290,7 +290,7 @@ nsSVGUtils::GetContextSize(const nsIFrame* aFrame) - MOZ_ASSERT(aFrame->GetContent()->IsSVGElement(), "bad cast"); - const nsSVGElement* element = static_cast(aFrame->GetContent()); - -- SVGSVGElement* ctx = element->GetCtx(); -+ SVGViewportElement* ctx = element->GetCtx(); - if (ctx) { - size.width = ctx->GetLength(SVGContentUtils::X); - size.height = ctx->GetLength(SVGContentUtils::Y); -@@ -323,7 +323,7 @@ nsSVGUtils::ObjectSpace(const gfxRect &aRect, const nsSVGLength2 *aLength) - // Multiply first to avoid precision errors: - return axis * aLength->GetAnimValInSpecifiedUnits() / 100; - } -- return aLength->GetAnimValue(static_cast(nullptr)) * axis; -+ return aLength->GetAnimValue(static_cast(nullptr)) * axis; - } - - float diff --git a/www/waterfox/files/patch-bug1398983 b/www/waterfox/files/patch-bug1398983 deleted file mode 100644 index b273a11cd518..000000000000 --- a/www/waterfox/files/patch-bug1398983 +++ /dev/null @@ -1,25 +0,0 @@ -commit 6b2dbc2b8216 -Author: Bobby Holley -Date: Fri Sep 15 12:25:46 2017 -0700 - - Bug 1398983 - Remove warning about assuming gecko style system. r=me - - MozReview-Commit-ID: BCeG81uxLvS ---- - dom/base/nsDocument.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git dom/base/nsDocument.cpp dom/base/nsDocument.cpp -index 9d9af08ba04b..076fe1a5d444 100644 ---- dom/base/nsDocument.cpp -+++ dom/base/nsDocument.cpp -@@ -13490,7 +13490,8 @@ nsIDocument::UpdateStyleBackendType() - // Enable stylo for SVG-as-image. - mStyleBackendType = StyleBackendType::Servo; - } else if (!mDocumentContainer) { -- NS_WARNING("stylo: No docshell yet, assuming Gecko style system"); -+ // Not docshell, assume Gecko. Various callers can end up setting this -+ // explicitly afterwards to inherit it in various situations. - } else if (!IsXULDocument() && IsContentDocument()) { - // Disable stylo for about: pages other than about:blank, since - // they tend to use unsupported selectors like XUL tree pseudos. diff --git a/www/waterfox/files/patch-bug1399091 b/www/waterfox/files/patch-bug1399091 deleted file mode 100644 index 5b94ab09a5b9..000000000000 --- a/www/waterfox/files/patch-bug1399091 +++ /dev/null @@ -1,36 +0,0 @@ -commit 4d1c939529c1 -Author: Catalin Badea -Date: Sun Sep 24 16:44:51 2017 -0400 - - Bug 1399091 - Avoid adding the same range to multiple selections. r=mats, a=sledru - - --HG-- - extra : source : c3b24ef4281035ee00e09b3386fcbf2d672775c4 ---- - dom/base/nsRange.cpp | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git dom/base/nsRange.cpp dom/base/nsRange.cpp -index 1e95ec629f55..8221450b828b 100644 ---- dom/base/nsRange.cpp -+++ dom/base/nsRange.cpp -@@ -1048,12 +1048,19 @@ nsRange::SetSelection(mozilla::dom::Selection* aSelection) - if (mSelection == aSelection) { - return; - } -+ - // At least one of aSelection and mSelection must be null - // aSelection will be null when we are removing from a selection - // and a range can't be in more than one selection at a time, - // thus mSelection must be null too. - MOZ_ASSERT(!aSelection || !mSelection); - -+ // Extra step in case our parent failed to ensure the above -+ // invariant. -+ if (aSelection && mSelection) { -+ mSelection->RemoveRange(this); -+ } -+ - mSelection = aSelection; - if (mSelection) { - nsINode* commonAncestor = GetCommonAncestor(); diff --git a/www/waterfox/files/patch-bug1399177 b/www/waterfox/files/patch-bug1399177 deleted file mode 100644 index f412dbb621cf..000000000000 --- a/www/waterfox/files/patch-bug1399177 +++ /dev/null @@ -1,47 +0,0 @@ -commit 376eb2d39f54 -Author: Doug Thayer -Date: Wed Sep 20 15:58:25 2017 -0700 - - Bug 1399177 - Pull label out of description in update popups. r=Gijs, a=sledru - - The margin rules for labels mean that if the See what's new link - starts its own line, the alignment looks off. We could override this, - but matching the styling for "Learn more" links, which get their own - line, seemed the better option. - - MozReview-Commit-ID: 4WK9QtRMUQs - - --HG-- - extra : source : f81f645704e4cdfaeebeb21d53d5d749718c3959 ---- - browser/components/customizableui/content/panelUI.inc.xul | 10 ++++------ - 1 file changed, 4 insertions(+), 6 deletions(-) - -diff --git browser/components/customizableui/content/panelUI.inc.xul browser/components/customizableui/content/panelUI.inc.xul -index 86fc1fa5639f..e7c63f612dc6 100644 ---- browser/components/customizableui/content/panelUI.inc.xul -+++ browser/components/customizableui/content/panelUI.inc.xul -@@ -421,9 +421,8 @@ - buttonhighlight="true" - hidden="true"> - -- &updateAvailable.message; -- -- -+ &updateAvailable.message; -+ - - - -@@ -440,9 +439,8 @@ - buttonhighlight="true" - hidden="true"> - -- &updateManual.message; -- -- -+ &updateManual.message; -+ - - - diff --git a/www/waterfox/files/patch-bug1399336 b/www/waterfox/files/patch-bug1399336 deleted file mode 100644 index cdd53e791954..000000000000 --- a/www/waterfox/files/patch-bug1399336 +++ /dev/null @@ -1,153 +0,0 @@ -commit 355019fdeca4 -Author: Mantaroh Yoshinaga -Date: Wed Sep 13 14:23:59 2017 +0900 - - Bug 1399336 - Memory leak of char16_t internal variables of widget/nsPrintOptionsImpl.cpp r=m_kato - - A nsPrintOptionsImpl has char16_t internal variables, and gecko will not release - these allocated variable. So we should use nsString instead of char16_t. - - MozReview-Commit-ID: 4ZMtUKoVCcR - - --HG-- - extra : rebase_source : 1720483301b900f8135c3d5f8f32d7051191aa8f ---- - widget/nsPrintOptionsImpl.cpp | 46 ++++++++++++++++++++----------------------- - 1 file changed, 21 insertions(+), 25 deletions(-) - -diff --git widget/nsPrintOptionsImpl.cpp widget/nsPrintOptionsImpl.cpp -index c36b5be3e8a7..c2b5e113612e 100644 ---- widget/nsPrintOptionsImpl.cpp -+++ widget/nsPrintOptionsImpl.cpp -@@ -765,13 +765,13 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName, - if (aFlags & nsIPrintSettings::kInitSavePaperSize) { - int16_t sizeUnit; - double width, height; -- char16_t *name; -+ nsString name; - - if ( - NS_SUCCEEDED(aPS->GetPaperSizeUnit(&sizeUnit)) && - NS_SUCCEEDED(aPS->GetPaperWidth(&width)) && - NS_SUCCEEDED(aPS->GetPaperHeight(&height)) && -- NS_SUCCEEDED(aPS->GetPaperName(&name)) -+ NS_SUCCEEDED(aPS->GetPaperName(getter_Copies(name))) - ) { - DUMP_INT(kWriteStr, kPrintPaperSizeUnit, sizeUnit); - Preferences::SetInt(GetPrefName(kPrintPaperSizeUnit, aPrinterName), -@@ -780,7 +780,7 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName, - WritePrefDouble(GetPrefName(kPrintPaperWidth, aPrinterName), width); - DUMP_DBL(kWriteStr, kPrintPaperHeight, height); - WritePrefDouble(GetPrefName(kPrintPaperHeight, aPrinterName), height); -- DUMP_STR(kWriteStr, kPrintPaperName, name); -+ DUMP_STR(kWriteStr, kPrintPaperName, name.get()); - Preferences::SetString(GetPrefName(kPrintPaperName, aPrinterName), name); - #if defined(XP_WIN) - // If the height and width are -1 then this might be a save triggered by -@@ -800,7 +800,7 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName, - } - - bool b; -- char16_t* uStr; -+ nsString uStr; - int32_t iVal; - int16_t iVal16; - double dbl; -@@ -822,48 +822,48 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName, - } - - if (aFlags & nsIPrintSettings::kInitSaveHeaderLeft) { -- if (NS_SUCCEEDED(aPS->GetHeaderStrLeft(&uStr))) { -- DUMP_STR(kWriteStr, kPrintHeaderStrLeft, uStr); -+ if (NS_SUCCEEDED(aPS->GetHeaderStrLeft(getter_Copies(uStr)))) { -+ DUMP_STR(kWriteStr, kPrintHeaderStrLeft, uStr.get()); - Preferences::SetString(GetPrefName(kPrintHeaderStrLeft, aPrinterName), - uStr); - } - } - - if (aFlags & nsIPrintSettings::kInitSaveHeaderCenter) { -- if (NS_SUCCEEDED(aPS->GetHeaderStrCenter(&uStr))) { -- DUMP_STR(kWriteStr, kPrintHeaderStrCenter, uStr); -+ if (NS_SUCCEEDED(aPS->GetHeaderStrCenter(getter_Copies(uStr)))) { -+ DUMP_STR(kWriteStr, kPrintHeaderStrCenter, uStr.get()); - Preferences::SetString(GetPrefName(kPrintHeaderStrCenter, aPrinterName), - uStr); - } - } - - if (aFlags & nsIPrintSettings::kInitSaveHeaderRight) { -- if (NS_SUCCEEDED(aPS->GetHeaderStrRight(&uStr))) { -- DUMP_STR(kWriteStr, kPrintHeaderStrRight, uStr); -+ if (NS_SUCCEEDED(aPS->GetHeaderStrRight(getter_Copies(uStr)))) { -+ DUMP_STR(kWriteStr, kPrintHeaderStrRight, uStr.get()); - Preferences::SetString(GetPrefName(kPrintHeaderStrRight, aPrinterName), - uStr); - } - } - - if (aFlags & nsIPrintSettings::kInitSaveFooterLeft) { -- if (NS_SUCCEEDED(aPS->GetFooterStrLeft(&uStr))) { -- DUMP_STR(kWriteStr, kPrintFooterStrLeft, uStr); -+ if (NS_SUCCEEDED(aPS->GetFooterStrLeft(getter_Copies(uStr)))) { -+ DUMP_STR(kWriteStr, kPrintFooterStrLeft, uStr.get()); - Preferences::SetString(GetPrefName(kPrintFooterStrLeft, aPrinterName), - uStr); - } - } - - if (aFlags & nsIPrintSettings::kInitSaveFooterCenter) { -- if (NS_SUCCEEDED(aPS->GetFooterStrCenter(&uStr))) { -- DUMP_STR(kWriteStr, kPrintFooterStrCenter, uStr); -+ if (NS_SUCCEEDED(aPS->GetFooterStrCenter(getter_Copies(uStr)))) { -+ DUMP_STR(kWriteStr, kPrintFooterStrCenter, uStr.get()); - Preferences::SetString(GetPrefName(kPrintFooterStrCenter, aPrinterName), - uStr); - } - } - - if (aFlags & nsIPrintSettings::kInitSaveFooterRight) { -- if (NS_SUCCEEDED(aPS->GetFooterStrRight(&uStr))) { -- DUMP_STR(kWriteStr, kPrintFooterStrRight, uStr); -+ if (NS_SUCCEEDED(aPS->GetFooterStrRight(getter_Copies(uStr)))) { -+ DUMP_STR(kWriteStr, kPrintFooterStrRight, uStr.get()); - Preferences::SetString(GetPrefName(kPrintFooterStrRight, aPrinterName), - uStr); - } -@@ -915,8 +915,8 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName, - // Only the general version of this pref is saved - if ((aFlags & nsIPrintSettings::kInitSavePrinterName) - && aPrinterName.IsEmpty()) { -- if (NS_SUCCEEDED(aPS->GetPrinterName(&uStr))) { -- DUMP_STR(kWriteStr, kPrinterName, uStr); -+ if (NS_SUCCEEDED(aPS->GetPrinterName(getter_Copies(uStr)))) { -+ DUMP_STR(kWriteStr, kPrinterName, uStr.get()); - Preferences::SetString(kPrinterName, uStr); - } - } -@@ -929,8 +929,8 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName, - } - - if (aFlags & nsIPrintSettings::kInitSaveToFileName) { -- if (NS_SUCCEEDED(aPS->GetToFileName(&uStr))) { -- DUMP_STR(kWriteStr, kPrintToFileName, uStr); -+ if (NS_SUCCEEDED(aPS->GetToFileName(getter_Copies(uStr)))) { -+ DUMP_STR(kWriteStr, kPrintToFileName, uStr.get()); - Preferences::SetString(GetPrefName(kPrintToFileName, aPrinterName), uStr); - } - } -@@ -1105,13 +1105,9 @@ GetAdjustedPrinterName(nsIPrintSettings* aPS, bool aUsePNP, - - // Get the Printer Name from the PrintSettings - // to use as a prefix for Pref Names -- char16_t* prtName = nullptr; -- -- nsresult rv = aPS->GetPrinterName(&prtName); -+ nsresult rv = aPS->GetPrinterName(getter_Copies(aPrinterName)); - NS_ENSURE_SUCCESS(rv, rv); - -- aPrinterName = nsDependentString(prtName); -- - // Convert any whitespaces, carriage returns or newlines to _ - // The below algorithm is supposedly faster than using iterators - NS_NAMED_LITERAL_STRING(replSubstr, "_"); diff --git a/www/waterfox/files/patch-bug1399412 b/www/waterfox/files/patch-bug1399412 deleted file mode 100644 index 29d0b3c5701a..000000000000 --- a/www/waterfox/files/patch-bug1399412 +++ /dev/null @@ -1,31 +0,0 @@ -commit f2d86a8b3050 -Author: Dimitry Andric -Date: Wed Sep 13 09:43:00 2017 -0400 - - Bug 1399412 - Work around clang assertion by wrapping lz4.c in an extern C block. r=froydnj - - MozReview-Commit-ID: LLgSbJadbyJ - - --HG-- - extra : amend_source : 08d7908fe6807db654411fc291bccc98496d4275 ---- - mfbt/Compression.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git mfbt/Compression.cpp mfbt/Compression.cpp -index 0a94cc69e224..c675aa90af62 100644 ---- mfbt/Compression.cpp -+++ mfbt/Compression.cpp -@@ -25,8 +25,12 @@ using namespace mozilla::Compression; - - namespace { - -+extern "C" { -+ - #include "lz4.c" - -+} -+ - }/* anonymous namespace */ - - /* Our wrappers */ diff --git a/www/waterfox/files/patch-bug1399520 b/www/waterfox/files/patch-bug1399520 deleted file mode 100644 index 0db6cf64bb7c..000000000000 --- a/www/waterfox/files/patch-bug1399520 +++ /dev/null @@ -1,93 +0,0 @@ -commit b4603106d015 -Author: Liang-Heng Chen -Date: Thu Oct 19 22:29:41 2017 -0400 - - Bug 1399520 - Avoid race condition. r=dragana - - MozReview-Commit-ID: 6Pd2HXqBgX4 ---- - modules/libjar/nsJAR.cpp | 26 ++++++++++++++++++-------- - modules/libjar/nsJAR.h | 8 +++++--- - 2 files changed, 23 insertions(+), 11 deletions(-) - -diff --git modules/libjar/nsJAR.cpp modules/libjar/nsJAR.cpp -index 80589e03f92b..b3121d99ef0a 100644 ---- modules/libjar/nsJAR.cpp -+++ modules/libjar/nsJAR.cpp -@@ -43,11 +43,27 @@ NS_IMPL_QUERY_INTERFACE(nsJAR, nsIZipReader) - NS_IMPL_ADDREF(nsJAR) - - // Custom Release method works with nsZipReaderCache... -+// Release might be called from multi-thread, we have to -+// take this function carefully to avoid delete-after-use. - MozExternalRefCountType nsJAR::Release(void) - { - nsrefcnt count; - NS_PRECONDITION(0 != mRefCnt, "dup release"); -- count = --mRefCnt; -+ -+ RefPtr cache; -+ if (mRefCnt == 2) { // don't use a lock too frequently -+ // Use a mutex here to guarantee mCache is not racing and the target instance -+ // is still valid to increase ref-count. -+ MutexAutoLock lock(mLock); -+ cache = mCache; -+ mCache = nullptr; -+ } -+ if (cache) { -+ DebugOnly rv = cache->ReleaseZip(this); -+ MOZ_ASSERT(NS_SUCCEEDED(rv), "failed to release zip file"); -+ } -+ -+ count = --mRefCnt; // don't access any member variable after this line - NS_LOG_RELEASE(this, count, "nsJAR"); - if (0 == count) { - mRefCnt = 1; /* stabilize */ -@@ -56,13 +72,7 @@ MozExternalRefCountType nsJAR::Release(void) - delete this; - return 0; - } -- if (1 == count && mCache) { --#ifdef DEBUG -- nsresult rv = --#endif -- mCache->ReleaseZip(this); -- NS_ASSERTION(NS_SUCCEEDED(rv), "failed to release zip file"); -- } -+ - return count; - } - -diff --git modules/libjar/nsJAR.h modules/libjar/nsJAR.h -index 7f675c93003b..4fe948680fbf 100644 ---- modules/libjar/nsJAR.h -+++ modules/libjar/nsJAR.h -@@ -12,6 +12,7 @@ - #include "mozilla/Logging.h" - #include "prinrval.h" - -+#include "mozilla/Atomics.h" - #include "mozilla/Mutex.h" - #include "nsIComponentManager.h" - #include "nsCOMPtr.h" -@@ -75,8 +76,9 @@ class nsJAR final : public nsIZipReader - mReleaseTime = PR_INTERVAL_NO_TIMEOUT; - } - -- void SetZipReaderCache(nsZipReaderCache* cache) { -- mCache = cache; -+ void SetZipReaderCache(nsZipReaderCache* aCache) { -+ mozilla::MutexAutoLock lock(mLock); -+ mCache = aCache; - } - - nsresult GetNSPRFileDesc(PRFileDesc** aNSPRFileDesc); -@@ -89,7 +91,7 @@ class nsJAR final : public nsIZipReader - RefPtr mZip; // The underlying zip archive - PRIntervalTime mReleaseTime; // used by nsZipReaderCache for flushing entries - nsZipReaderCache* mCache; // if cached, this points to the cache it's contained in -- mozilla::Mutex mLock; -+ mozilla::Mutex mLock; // protect mCache and mZip - int64_t mMtime; - bool mOpened; - bool mIsOmnijar; diff --git a/www/waterfox/files/patch-bug1399939 b/www/waterfox/files/patch-bug1399939 deleted file mode 100644 index 95bdfb17d22a..000000000000 --- a/www/waterfox/files/patch-bug1399939 +++ /dev/null @@ -1,36 +0,0 @@ -commit b0369ebbca69 -Author: Gijs Kruitbosch -Date: Thu Sep 28 12:00:22 2017 +0100 - - Bug 1399939 - Switch to highly restrictive profile for IDN. r=dveditz, r=jfkthame, a=sledru - - MozReview-Commit-ID: E5LRuQVfIZP - - --HG-- - extra : source : e1c1ebf60808e5e94b9a03d8cb577990ac0b9ca1 ---- - modules/libpref/init/all.js | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git modules/libpref/init/all.js modules/libpref/init/all.js -index c74659f8d4a5..c796df0fef1d 100644 ---- modules/libpref/init/all.js -+++ modules/libpref/init/all.js -@@ -1913,7 +1913,7 @@ pref("network.IDN_show_punycode", false); - // IDN-safe. Otherwise, they're treated as unsafe and punycode will be used - // for displaying them in the UI (e.g. URL bar), unless they conform to one of - // the profiles specified in --// http://www.unicode.org/reports/tr36/proposed.html#Security_Levels_and_Alerts -+// https://www.unicode.org/reports/tr39/#Restriction_Level_Detection - // If "network.IDN.restriction_profile" is "high", the Highly Restrictive - // profile is used. - // If "network.IDN.restriction_profile" is "moderate", the Moderately -@@ -1922,7 +1922,7 @@ pref("network.IDN_show_punycode", false); - // Note that these preferences are referred to ONLY when - // "network.IDN_show_punycode" is false. In other words, all IDNs will be shown - // in punycode if "network.IDN_show_punycode" is true. --pref("network.IDN.restriction_profile", "moderate"); -+pref("network.IDN.restriction_profile", "high"); - pref("network.IDN.use_whitelist", false); - - // ccTLDs diff --git a/www/waterfox/files/patch-bug1400238 b/www/waterfox/files/patch-bug1400238 deleted file mode 100644 index efc0314ff24c..000000000000 --- a/www/waterfox/files/patch-bug1400238 +++ /dev/null @@ -1,30 +0,0 @@ -commit 02ae35c9e105 -Author: Botond Ballo -Date: Wed Oct 18 13:29:47 2017 -0400 - - Bug 1400238 - Notify TabParent when the GTK client offset changes. r=karlt - - MozReview-Commit-ID: 1TacAhl6c2M - - --HG-- - extra : rebase_source : 5641d417a6245cc2f8027fd91032119f1b36d461 ---- - widget/gtk/nsWindow.cpp | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git widget/gtk/nsWindow.cpp widget/gtk/nsWindow.cpp -index 955327297ac9..e58f3dcb59d5 100644 ---- widget/gtk/nsWindow.cpp -+++ widget/gtk/nsWindow.cpp -@@ -1567,6 +1567,11 @@ nsWindow::OnPropertyNotifyEvent(GtkWidget* aWidget, GdkEventProperty* aEvent) - { - if (aEvent->atom == gdk_atom_intern("_NET_FRAME_EXTENTS", FALSE)) { - UpdateClientOffset(); -+ -+ // Send a WindowMoved notification. This ensures that TabParent -+ // picks up the new client offset and sends it to the child process -+ // if appropriate. -+ NotifyWindowMoved(mBounds.x, mBounds.y); - return FALSE; - } - diff --git a/www/waterfox/files/patch-bug1400540 b/www/waterfox/files/patch-bug1400540 deleted file mode 100644 index 6cbe87dc3d61..000000000000 --- a/www/waterfox/files/patch-bug1400540 +++ /dev/null @@ -1,47 +0,0 @@ -commit 6905267b2878 -Author: Xidorn Quan -Date: Wed Sep 20 08:26:53 2017 +1000 - - Bug 1400540 - Decide style backend type based on principal. r=bholley - - MozReview-Commit-ID: A4y9Shdbr7g - - --HG-- - extra : source : cdfe5e5e059273a1c7fc6506d6e0fecb2bb7affb ---- - dom/base/nsDocument.cpp | 21 ++++++++------------- - 1 file changed, 8 insertions(+), 13 deletions(-) - -diff --git dom/base/nsDocument.cpp dom/base/nsDocument.cpp -index 642960e6a155..265af0df07b9 100644 ---- dom/base/nsDocument.cpp -+++ dom/base/nsDocument.cpp -@@ -13465,20 +13465,15 @@ nsIDocument::UpdateStyleBackendType() - - #ifdef MOZ_STYLO - if (nsLayoutUtils::StyloEnabled()) { -- if (IsBeingUsedAsImage()) { -- // Enable stylo for SVG-as-image. -+ // Disable stylo only for system principal. Other principals aren't -+ // able to use XUL by default, and the back door to enable XUL is -+ // mostly just for testing, which means they don't matter, and we -+ // shouldn't respect them at the same time. -+ // Note that, since tests can have XUL support, we still need to -+ // explicitly exclude XUL documents here. -+ if (!nsContentUtils::IsSystemPrincipal(NodePrincipal()) && -+ !IsXULDocument()) { - mStyleBackendType = StyleBackendType::Servo; -- } else if (!mDocumentContainer) { -- // Not docshell, assume Gecko. Various callers can end up setting this -- // explicitly afterwards to inherit it in various situations. -- } else if (!IsXULDocument() && IsContentDocument()) { -- // Disable stylo for about: pages other than about:blank, since -- // they tend to use unsupported selectors like XUL tree pseudos. -- bool isAbout = false; -- mDocumentURI->SchemeIs("about", &isAbout); -- if (!isAbout || NS_IsAboutBlank(mDocumentURI)) { -- mStyleBackendType = StyleBackendType::Servo; -- } - } - } - #endif diff --git a/www/waterfox/files/patch-bug1400674 b/www/waterfox/files/patch-bug1400674 deleted file mode 100644 index 955ac0e9f58c..000000000000 --- a/www/waterfox/files/patch-bug1400674 +++ /dev/null @@ -1,70 +0,0 @@ -commit c08bea16ab67 (HEAD) -Author: JW Wang -Date: Fri Oct 13 17:24:24 2017 +0800 - - Bug 1400674 - Fix the algorithm of filling audio gaps with silence. r=jya, a=ritu - - MozReview-Commit-ID: Hjsboq6PdlN - - --HG-- - extra : source : aecaa85bb1d9d8b7d2cbd9ab84eb6dbc0ed9eee8 ---- - dom/media/mediasink/AudioSink.cpp | 37 +++++++++++++++---------------------- - 1 file changed, 15 insertions(+), 22 deletions(-) - -diff --git dom/media/mediasink/AudioSink.cpp dom/media/mediasink/AudioSink.cpp -index 0dbb53a3387a..81be7ac0bd89 100644 ---- dom/media/mediasink/AudioSink.cpp -+++ dom/media/mediasink/AudioSink.cpp -@@ -426,28 +426,21 @@ AudioSink::NotifyAudioNeeded() - missingFrames = std::min(INT32_MAX, missingFrames.value()); - mFramesParsed += missingFrames.value(); - -- // We need to calculate how many frames are missing at the output rate. -- missingFrames = -- SaferMultDiv(missingFrames.value(), mOutputRate, data->mRate); -- if (!missingFrames.isValid()) { -- NS_WARNING("Int overflow in AudioSink"); -- mErrored = true; -- return; -- } -- -- // We need to insert silence, first use drained frames if any. -- missingFrames -= DrainConverter(missingFrames.value()); -- // Insert silence if still needed. -- if (missingFrames.value()) { -- AlignedAudioBuffer silenceData(missingFrames.value() * mOutputChannels); -- if (!silenceData) { -- NS_WARNING("OOM in AudioSink"); -- mErrored = true; -- return; -- } -- RefPtr silence = CreateAudioFromBuffer(Move(silenceData), data); -- PushProcessedAudio(silence); -+ RefPtr silenceData; -+ AlignedAudioBuffer silenceBuffer(missingFrames.value() * data->mChannels); -+ if (!silenceBuffer) { -+ NS_WARNING("OOM in AudioSink"); -+ mErrored = true; -+ return; -+ } -+ if (mConverter->InputConfig() != mConverter->OutputConfig()) { -+ AlignedAudioBuffer convertedData = -+ mConverter->Process(AudioSampleBuffer(Move(silenceBuffer))).Forget(); -+ silenceData = CreateAudioFromBuffer(Move(convertedData), data); -+ } else { -+ silenceData = CreateAudioFromBuffer(Move(silenceBuffer), data); - } -+ PushProcessedAudio(silenceData); - } - - mLastEndTime = data->GetEndTime(); -@@ -488,7 +481,7 @@ AudioSink::PushProcessedAudio(AudioData* aData) - - already_AddRefed - AudioSink::CreateAudioFromBuffer(AlignedAudioBuffer&& aBuffer, -- AudioData* aReference) -+ AudioData* aReference) - { - uint32_t frames = aBuffer.Length() / mOutputChannels; - if (!frames) { diff --git a/www/waterfox/files/patch-bug1400839 b/www/waterfox/files/patch-bug1400839 deleted file mode 100644 index 88f5d88c2e16..000000000000 --- a/www/waterfox/files/patch-bug1400839 +++ /dev/null @@ -1,49 +0,0 @@ -commit a0bf5a4eff67 -Author: sebastian@ifyouwantblood.de -Date: Tue Sep 19 11:47:12 2017 +1200 - - bug 1400839 use -1 instead of 0 to indicate absent glxtest_pipe fd r=karlt - - Englightenment closes fd 0 on child processes and so pipe() can return a zero fd. - - MozReview-Commit-ID: 5d9xQXgwgfv - - --HG-- - extra : rebase_source : c31aa7ce731ba325993f463b79b446ae67c932dd ---- - widget/GfxInfoX11.cpp | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git widget/GfxInfoX11.cpp widget/GfxInfoX11.cpp -index bf99367d084b..8bb54a99136f 100644 ---- widget/GfxInfoX11.cpp -+++ widget/GfxInfoX11.cpp -@@ -28,7 +28,7 @@ NS_IMPL_ISUPPORTS_INHERITED(GfxInfo, GfxInfoBase, nsIGfxInfoDebug) - #endif - - // these global variables will be set when firing the glxtest process --int glxtest_pipe = 0; -+int glxtest_pipe = -1; - pid_t glxtest_pid = 0; - - nsresult -@@ -55,8 +55,8 @@ GfxInfo::GetData() - // to understand this function, see bug 639842. We retrieve the OpenGL driver information in a - // separate process to protect against bad drivers. - -- // if glxtest_pipe == 0, that means that we already read the information -- if (!glxtest_pipe) -+ // if glxtest_pipe == -1, that means that we already read the information -+ if (glxtest_pipe == -1) - return; - - enum { buf_size = 1024 }; -@@ -65,7 +65,7 @@ GfxInfo::GetData() - &buf, - buf_size-1); // -1 because we'll append a zero - close(glxtest_pipe); -- glxtest_pipe = 0; -+ glxtest_pipe = -1; - - // bytesread < 0 would mean that the above read() call failed. - // This should never happen. If it did, the outcome would be to blacklist anyway. diff --git a/www/waterfox/files/patch-bug1401063 b/www/waterfox/files/patch-bug1401063 deleted file mode 100644 index d151a96dfd6e..000000000000 --- a/www/waterfox/files/patch-bug1401063 +++ /dev/null @@ -1,160 +0,0 @@ -commit fb488ded4b64 -Author: Brad Werth -Date: Tue Sep 19 13:00:28 2017 -0700 - - Bug 1401063: Cache remaining gtk window and button colors to eliminate on-demand gtk calls in ::NativeGetColor. r=karlt - - MozReview-Commit-ID: HbZqBUG0w7y - - --HG-- - extra : rebase_source : 0b26c22113c2cda49129006fe933f20719b7a679 ---- - widget/gtk/nsLookAndFeel.cpp | 62 +++++++++++++++++++------------------------- - widget/gtk/nsLookAndFeel.h | 5 ++++ - 2 files changed, 31 insertions(+), 36 deletions(-) - -diff --git widget/gtk/nsLookAndFeel.cpp widget/gtk/nsLookAndFeel.cpp -index 9a2684412ee8..e02bf10fe87f 100644 ---- widget/gtk/nsLookAndFeel.cpp -+++ widget/gtk/nsLookAndFeel.cpp -@@ -225,7 +225,6 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) - { - EnsureInit(); - -- GdkRGBA gdk_color; - nsresult res = NS_OK; - - switch (aID) { -@@ -294,40 +293,26 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) - aColor = NS_TRANSPARENT; - break; - case eColorID_SpellCheckerUnderline: -- aColor = NS_RGB(0xff, 0, 0); -- break; -+ aColor = NS_RGB(0xff, 0, 0); -+ break; - - // css2 http://www.w3.org/TR/REC-CSS2/ui.html#system-colors -- case eColorID_activeborder: { -+ case eColorID_activeborder: - // active window border -- GtkStyleContext *style = GetStyleContext(MOZ_GTK_WINDOW); -- gtk_style_context_get_border_color(style, -- GTK_STATE_FLAG_NORMAL, &gdk_color); -- aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); -+ aColor = sMozWindowActiveBorder; - break; -- } -- case eColorID_inactiveborder: { -+ case eColorID_inactiveborder: - // inactive window border -- GtkStyleContext *style = GetStyleContext(MOZ_GTK_WINDOW); -- gtk_style_context_get_border_color(style, -- GTK_STATE_FLAG_INSENSITIVE, -- &gdk_color); -- aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); -+ aColor = sMozWindowInactiveBorder; - break; -- } - case eColorID_graytext: // disabled text in windows, menus, etc. - case eColorID_inactivecaptiontext: // text in inactive window caption - aColor = sMenuTextInactive; - break; -- case eColorID_inactivecaption: { -+ case eColorID_inactivecaption: - // inactive window caption -- GtkStyleContext *style = GetStyleContext(MOZ_GTK_WINDOW); -- gtk_style_context_get_background_color(style, -- GTK_STATE_FLAG_INSENSITIVE, -- &gdk_color); -- aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); -+ aColor = sMozWindowInactiveCaption; - break; -- } - case eColorID_infobackground: - // tooltip background color - aColor = sInfoBackground; -@@ -389,22 +374,13 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) - case eColorID__moz_fieldtext: - aColor = sMozFieldText; - break; -- case eColorID__moz_buttondefault: { -+ case eColorID__moz_buttondefault: - // default button border color -- GtkStyleContext *style = GetStyleContext(MOZ_GTK_BUTTON); -- gtk_style_context_get_border_color(style, -- GTK_STATE_FLAG_NORMAL, &gdk_color); -- aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); -+ aColor = sButtonDefault; - break; -- } -- case eColorID__moz_buttonhoverface: { -- GtkStyleContext *style = GetStyleContext(MOZ_GTK_BUTTON); -- gtk_style_context_get_background_color(style, -- GTK_STATE_FLAG_PRELIGHT, -- &gdk_color); -- aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); -+ case eColorID__moz_buttonhoverface: -+ aColor = sButtonHoverFace; - break; -- } - case eColorID__moz_buttonhovertext: - aColor = sButtonHoverText; - break; -@@ -863,6 +839,15 @@ nsLookAndFeel::EnsureInit() - sMozWindowBackground = GDK_RGBA_TO_NS_RGBA(color); - gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &color); - sMozWindowText = GDK_RGBA_TO_NS_RGBA(color); -+ gtk_style_context_get_border_color(style, GTK_STATE_FLAG_NORMAL, &color); -+ sMozWindowActiveBorder = GDK_RGBA_TO_NS_RGBA(color); -+ gtk_style_context_get_border_color(style, GTK_STATE_FLAG_INSENSITIVE, -+ &color); -+ sMozWindowInactiveBorder = GDK_RGBA_TO_NS_RGBA(color); -+ gtk_style_context_get_background_color(style, GTK_STATE_FLAG_INSENSITIVE, -+ &color); -+ sMozWindowInactiveCaption = GDK_RGBA_TO_NS_RGBA(color); -+ - style = GetStyleContext(MOZ_GTK_WINDOW_CONTAINER); - { - GtkStyleContext* labelStyle = CreateStyleForWidget(labelWidget, style); -@@ -953,10 +938,15 @@ nsLookAndFeel::EnsureInit() - - GetSystemFontInfo(labelStyle, &mButtonFontName, &mButtonFontStyle); - -+ gtk_style_context_get_border_color(style, GTK_STATE_FLAG_NORMAL, &color); -+ sButtonDefault = GDK_RGBA_TO_NS_RGBA(color); - 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); - sButtonHoverText = GDK_RGBA_TO_NS_RGBA(color); -+ gtk_style_context_get_background_color(style, GTK_STATE_FLAG_PRELIGHT, -+ &color); -+ sButtonHoverFace = GDK_RGBA_TO_NS_RGBA(color); - g_object_unref(labelStyle); - } - -diff --git widget/gtk/nsLookAndFeel.h widget/gtk/nsLookAndFeel.h -index 38cd51c056d6..177d069f6567 100644 ---- widget/gtk/nsLookAndFeel.h -+++ widget/gtk/nsLookAndFeel.h -@@ -58,8 +58,10 @@ protected: - nscolor sMenuTextInactive; - nscolor sMenuHover; - nscolor sMenuHoverText; -+ nscolor sButtonDefault; - nscolor sButtonText; - nscolor sButtonHoverText; -+ nscolor sButtonHoverFace; - nscolor sFrameOuterLightBorder; - nscolor sFrameInnerDarkBorder; - nscolor sOddCellBackground; -@@ -70,6 +72,9 @@ protected: - nscolor sMozFieldBackground; - nscolor sMozWindowText; - nscolor sMozWindowBackground; -+ nscolor sMozWindowActiveBorder; -+ nscolor sMozWindowInactiveBorder; -+ nscolor sMozWindowInactiveCaption; - nscolor sTextSelectedText; - nscolor sTextSelectedBackground; - nscolor sMozScrollbar; diff --git a/www/waterfox/files/patch-bug1401416 b/www/waterfox/files/patch-bug1401416 deleted file mode 100644 index 63f0f8e8e713..000000000000 --- a/www/waterfox/files/patch-bug1401416 +++ /dev/null @@ -1,29 +0,0 @@ -commit c5123938eb1e -Author: Tobias Schneider -Date: Thu Sep 21 12:43:35 2017 -0700 - - Bug 1401416 - [intersection-observer] Let intersection rect be empty if do_QueryFrame(rootFrame) returns null. r=dholbert, a=sledru - - --HG-- - extra : source : 90be30b5206c2b2724d61f4f6782197bfa768428 ---- - dom/base/DOMIntersectionObserver.cpp | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git dom/base/DOMIntersectionObserver.cpp dom/base/DOMIntersectionObserver.cpp -index 606a1de5ed8c..1ca909e3cfbf 100644 ---- dom/base/DOMIntersectionObserver.cpp -+++ dom/base/DOMIntersectionObserver.cpp -@@ -308,7 +308,11 @@ DOMIntersectionObserver::Update(nsIDocument* aDocument, DOMHighResTimeStamp time - } - root = rootFrame->GetContent()->AsElement(); - nsIScrollableFrame* scrollFrame = do_QueryFrame(rootFrame); -- rootRect = scrollFrame->GetScrollPortRect(); -+ // If we end up with a null root frame for some reason, we'll proceed -+ // with an empty root intersection rect. -+ if (scrollFrame) { -+ rootRect = scrollFrame->GetScrollPortRect(); -+ } - } - } - } diff --git a/www/waterfox/files/patch-bug1401522 b/www/waterfox/files/patch-bug1401522 deleted file mode 100644 index ac62fbdbb66e..000000000000 --- a/www/waterfox/files/patch-bug1401522 +++ /dev/null @@ -1,34 +0,0 @@ -commit e9d4b51968e0 -Author: Samael Wang -Date: Thu Sep 28 11:16:53 2017 +0800 - - Bug 1401522 - Don't apply statusCode sent from parent if mCanceled or mStatus has been modified in the child. r=mayhemer, a=ritu - - When a WyciwygChannel is canceled, but WyciwygChannelParent::RecvCancel happens - after WyciwygChannelParent::SendOnStartRequest, it would send statusCode=NS_OK - to WyciwygChannelChild::OnStartRequest. So we should not apply the statusCode - if mCanceled, just like how HttpChannelChild handles it. - - MozReview-Commit-ID: 5H3PUrlArIA - - --HG-- - extra : source : 8ebfa90c4ebca44ac1c3829ef54de74d3b004dfc ---- - netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp -index d14b6f925e37..85d3ebf24439 100644 ---- netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp -+++ netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp -@@ -191,7 +191,9 @@ WyciwygChannelChild::OnStartRequest(const nsresult& statusCode, - - mState = WCC_ONSTART; - -- mStatus = statusCode; -+ if (!mCanceled && NS_SUCCEEDED(mStatus)) { -+ mStatus = statusCode; -+ } - mContentLength = contentLength; - mCharsetSource = source; - mCharset = charset; diff --git a/www/waterfox/files/patch-bug1401573 b/www/waterfox/files/patch-bug1401573 deleted file mode 100644 index 22fc6f569a59..000000000000 --- a/www/waterfox/files/patch-bug1401573 +++ /dev/null @@ -1,27 +0,0 @@ -commit d0ed05261f20 -Author: jason laster -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/waterfox/files/patch-bug1401726 b/www/waterfox/files/patch-bug1401726 deleted file mode 100644 index a4697e6263c1..000000000000 --- a/www/waterfox/files/patch-bug1401726 +++ /dev/null @@ -1,60 +0,0 @@ -commit ccbee985a281 -Author: John Dai -Date: Thu Sep 21 16:32:18 2017 +0800 - - Bug 1401726 - Fix crash in nsLabelsNodeList::PopulateSelf. r=smaug, a=sledru - - From 045228df087f7612bde09d2f715ec33f2aaf777c Mon Sep 17 00:00:00 2001 ---- - dom/base/nsContentList.cpp | 4 +++- - dom/html/crashtests/1401726.html | 17 +++++++++++++++++ - dom/html/crashtests/crashtests.list | 1 + - 3 files changed, 21 insertions(+), 1 deletion(-) - -diff --git dom/base/nsContentList.cpp dom/base/nsContentList.cpp -index f943039e7fca..9b7bd6323aa8 100644 ---- dom/base/nsContentList.cpp -+++ dom/base/nsContentList.cpp -@@ -1266,7 +1266,9 @@ nsLabelsNodeList::MaybeResetRoot(nsINode* aRootNode) - void - nsLabelsNodeList::PopulateSelf(uint32_t aNeededLength) - { -- MOZ_ASSERT(mRootNode, "Must have root"); -+ if (!mRootNode) { -+ return; -+ } - - // Start searching at the root. - nsINode* cur = mRootNode; -diff --git dom/html/crashtests/1401726.html dom/html/crashtests/1401726.html -new file mode 100644 -index 000000000000..bf4b4918abd4 ---- /dev/null -+++ dom/html/crashtests/1401726.html -@@ -0,0 +1,17 @@ -+ -+ -+ -+ -+ -+ -diff --git dom/html/crashtests/crashtests.list dom/html/crashtests/crashtests.list -index a60cc9f99474..581ed10cefc8 100644 ---- dom/html/crashtests/crashtests.list -+++ dom/html/crashtests/crashtests.list -@@ -83,3 +83,4 @@ load 1343886-2.xml - load 1343886-3.xml - asserts(0-3) load 1350972.html - load 1386905.html -+asserts(0-4) load 1401726.html diff --git a/www/waterfox/files/patch-bug1401876 b/www/waterfox/files/patch-bug1401876 deleted file mode 100644 index be5ff6d9811b..000000000000 --- a/www/waterfox/files/patch-bug1401876 +++ /dev/null @@ -1,48 +0,0 @@ -commit 09ba71b3a5e9 -Author: Scott Wu -Date: Thu Sep 21 15:37:25 2017 +0800 - - Bug 1401876 - Part 1: Close datetime picker on popuphidden. r=mconley, a=ritu - - MozReview-Commit-ID: FUqbtAftQxh - - --HG-- - extra : source : e238860e4943cd1bb4c2c5f7175a36d494f0e91b ---- - toolkit/content/tests/browser/head.js | 1 + - toolkit/content/widgets/datetimepopup.xml | 2 +- - toolkit/modules/DateTimePickerHelper.jsm | 1 + - 3 files changed, 3 insertions(+), 1 deletion(-) - -diff --git toolkit/content/widgets/datetimepopup.xml toolkit/content/widgets/datetimepopup.xml -index 7e4e5bcfe4e8..7397e1d310d4 100644 ---- toolkit/content/widgets/datetimepopup.xml -+++ toolkit/content/widgets/datetimepopup.xml -@@ -75,7 +75,6 @@ - this.dateTimePopupFrame.removeEventListener("load", this, true); - this.dateTimePopupFrame.contentDocument.removeEventListener("message", this); - this.dateTimePopupFrame.setAttribute("src", ""); -- this.hidePopup(); - this.hidden = true; - ]]> - -@@ -320,6 +319,7 @@ - break; - } - case "ClosePopup": { -+ this.hidePopup(); - this.closePicker(); - break; - } -diff --git toolkit/modules/DateTimePickerHelper.jsm toolkit/modules/DateTimePickerHelper.jsm -index ced4e401815b..38e89bd0d160 100644 ---- toolkit/modules/DateTimePickerHelper.jsm -+++ toolkit/modules/DateTimePickerHelper.jsm -@@ -90,6 +90,7 @@ this.DateTimePickerHelper = { - if (browser) { - browser.messageManager.sendAsyncMessage("FormDateTime:PickerClosed"); - } -+ this.picker.closePicker(); - this.close(); - break; - } diff --git a/www/waterfox/files/patch-bug1401878 b/www/waterfox/files/patch-bug1401878 deleted file mode 100644 index 8f762bf24bbd..000000000000 --- a/www/waterfox/files/patch-bug1401878 +++ /dev/null @@ -1,70 +0,0 @@ -commit 59e5b0881ec2 -Author: Andrea Marchesini -Date: Thu Sep 21 21:32:00 2017 +0200 - - Bug 1401878 - Remove ServiceWorkers in SiteDataManager.jsm. r=bkelly, a=sledru - - --HG-- - extra : source : 04888373f12bd5d86ec3f4057c3a2f0b2240c963 - extra : intermediate-source : e2b1cd9fd4a66fc932d8f74cfe2b38c55b9a7a1e ---- - browser/components/preferences/SiteDataManager.jsm | 26 ++++++++++++++++++++++ - 1 file changed, 26 insertions(+) - -diff --git browser/components/preferences/SiteDataManager.jsm browser/components/preferences/SiteDataManager.jsm -index d6dd5c78656a..8f2ac2a34188 100644 ---- browser/components/preferences/SiteDataManager.jsm -+++ browser/components/preferences/SiteDataManager.jsm -@@ -9,6 +9,9 @@ XPCOMUtils.defineLazyModuleGetter(this, "OfflineAppCacheHelper", - "resource:///modules/offlineAppCache.jsm"); - XPCOMUtils.defineLazyModuleGetter(this, "ContextualIdentityService", - "resource://gre/modules/ContextualIdentityService.jsm"); -+XPCOMUtils.defineLazyServiceGetter(this, "serviceWorkerManager", -+ "@mozilla.org/serviceworkers/manager;1", -+ "nsIServiceWorkerManager"); - - this.EXPORTED_SYMBOLS = [ - "SiteDataManager" -@@ -216,6 +219,19 @@ this.SiteDataManager = { - } - }, - -+ _removeServiceWorkers(site) { -+ let serviceWorkers = serviceWorkerManager.getAllRegistrations(); -+ for (let i = 0; i < serviceWorkers.length; i++) { -+ let sw = serviceWorkers.queryElementAt(i, Ci.nsIServiceWorkerRegistrationInfo); -+ for (let principal of site.principals) { -+ if (sw.principal.equals(principal)) { -+ serviceWorkerManager.removeAndPropagate(sw.principal.URI.host); -+ break; -+ } -+ } -+ } -+ }, -+ - remove(hosts) { - let promises = []; - let unknownHost = ""; -@@ -225,6 +241,7 @@ this.SiteDataManager = { - this._removePermission(site); - this._removeAppCache(site); - this._removeCookie(site); -+ this._removeServiceWorkers(site); - promises.push(this._removeQuotaUsage(site)); - } else { - unknownHost = host; -@@ -240,6 +257,14 @@ this.SiteDataManager = { - }, - - removeAll() { -+ // Iterate through the service workers and remove them. -+ let serviceWorkers = serviceWorkerManager.getAllRegistrations(); -+ for (let i = 0; i < serviceWorkers.length; i++) { -+ let sw = serviceWorkers.queryElementAt(i, Ci.nsIServiceWorkerRegistrationInfo); -+ let host = sw.principal.URI.host; -+ serviceWorkerManager.removeAndPropagate(host); -+ } -+ - let promises = []; - for (let site of this._sites.values()) { - this._removePermission(site); diff --git a/www/waterfox/files/patch-bug1401909 b/www/waterfox/files/patch-bug1401909 deleted file mode 100644 index f376a52b2732..000000000000 --- a/www/waterfox/files/patch-bug1401909 +++ /dev/null @@ -1,30 +0,0 @@ -commit ec17ee7e24b2 -Author: Kaku Kuo -Date: Thu Sep 21 17:47:45 2017 +0800 - - Bug 1401909 - Turn on preference of ShutdownDecoder feature on desktop version release and beta channel. r=bwu, a=sledru - - MozReview-Commit-ID: JB3RmyjhvK9 - - --HG-- - extra : source : 27953b6cbc9b9bff5fb14cb0e69b492f08e62da8 ---- - modules/libpref/init/all.js | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git modules/libpref/init/all.js modules/libpref/init/all.js -index 6d66d27d987c..c74659f8d4a5 100644 ---- modules/libpref/init/all.js -+++ modules/libpref/init/all.js -@@ -432,11 +432,7 @@ pref("media.decoder-doctor.wmf-disabled-is-failure", false); - pref("media.decoder-doctor.new-issue-endpoint", "https://webcompat.com/issues/new"); - - // Whether to suspend decoding of videos in background tabs. --#ifdef RELEASE_OR_BETA --pref("media.suspend-bkgnd-video.enabled", false); --#else - pref("media.suspend-bkgnd-video.enabled", true); --#endif - // Delay, in ms, from time window goes to background to suspending - // video decoders. Defaults to 10 seconds. - pref("media.suspend-bkgnd-video.delay-ms", 10000); diff --git a/www/waterfox/files/patch-bug1401992 b/www/waterfox/files/patch-bug1401992 deleted file mode 100644 index cc3a94b30f9d..000000000000 --- a/www/waterfox/files/patch-bug1401992 +++ /dev/null @@ -1,239 +0,0 @@ -commit b00a6f8952ad -Author: Bobby Holley -Date: Fri Sep 22 12:34:00 2017 -0700 - - Bug 1401992 - Don't cross anonymous boundaries when finding the fieldset. r=bz, a=sledru - - MozReview-Commit-ID: DiywRognpqx - - --HG-- - extra : source : 581b6ab2826a3a90f3d47713b3940f176aa4d39f ---- - dom/html/nsGenericHTMLElement.cpp | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git dom/html/nsGenericHTMLElement.cpp dom/html/nsGenericHTMLElement.cpp -index 61953dab88ce..eda85c9eebaf 100644 ---- dom/html/nsGenericHTMLElement.cpp -+++ dom/html/nsGenericHTMLElement.cpp -@@ -545,7 +545,7 @@ nsGenericHTMLElement::FindAncestorForm(HTMLFormElement* aCurrentForm) - "FindAncestorForm should not be called if @form is set!"); - - // Make sure we don't end up finding a form that's anonymous from -- // our point of view. -+ // our point of view. See also nsGenericHTMLFormElement::UpdateFieldSet. - nsIContent* bindingParent = GetBindingParent(); - - nsIContent* content = this; -@@ -2365,7 +2365,11 @@ nsGenericHTMLFormElement::UpdateFieldSet(bool aNotify) - nsIContent* parent = nullptr; - nsIContent* prev = nullptr; - -- for (parent = GetParent(); parent; -+ // Don't walk out of anonymous subtrees. Note the similar code in -+ // nsGenericHTMLElement::FindAncestorForm. -+ nsIContent* bindingParent = GetBindingParent(); -+ -+ for (parent = GetParent(); parent && parent != bindingParent; - prev = parent, parent = parent->GetParent()) { - HTMLFieldSetElement* fieldset = - HTMLFieldSetElement::FromContent(parent); - -commit 637fd3497d25 -Author: Bobby Holley -Date: Fri Sep 22 17:06:00 2017 -0700 - - Bug 1401992 - Reftest. r=me, a=sledru - - MozReview-Commit-ID: C7UQEQOkE7q - - --HG-- - extra : source : 5bfa23832767e42835f4c144fcbd4a351b7feca2 - extra : histedit_source : 31c6d70fac5308f511033692eeb3d8907a88ccab%2Ce5b28d61e7e6cffa0aee00cc2d563be5052830f0 ---- - layout/reftests/bugs/1401992-ref.html | 21 +++++++++++++++++++++ - layout/reftests/bugs/1401992.html | 32 ++++++++++++++++++++++++++++++++ - layout/reftests/bugs/reftest.list | 1 + - 3 files changed, 54 insertions(+) - -diff --git layout/reftests/bugs/1401992-ref.html layout/reftests/bugs/1401992-ref.html -new file mode 100644 -index 000000000000..8fb36196cf39 ---- /dev/null -+++ layout/reftests/bugs/1401992-ref.html -@@ -0,0 +1,21 @@ -+ -+ -+ -+ -+ -+ -+ -+
-+ -+ -diff --git layout/reftests/bugs/1401992.html layout/reftests/bugs/1401992.html -new file mode 100644 -index 000000000000..f48f563a01a8 ---- /dev/null -+++ layout/reftests/bugs/1401992.html -@@ -0,0 +1,32 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+
-+ -+ -diff --git layout/reftests/bugs/reftest.list layout/reftests/bugs/reftest.list -index e95eb8318a5a..55eb7da5611f 100644 ---- layout/reftests/bugs/reftest.list -+++ layout/reftests/bugs/reftest.list -@@ -2037,3 +2037,4 @@ needs-focus != 1377447-1.html 1377447-2.html - == 1380224-1.html 1380224-1-ref.html - == 1384065.html 1384065-ref.html - == 1384275-1.html 1384275-1-ref.html -+== 1401992.html 1401992-ref.html - -commit 67ad215f14ae -Author: Bobby Holley -Date: Fri Sep 22 17:20:31 2017 -0700 - - Bug 1401992 - Mark some tests as passing on android. r=me, a=sledru - - MozReview-Commit-ID: HJuIX5VXBm5 - - --HG-- - extra : source : 4c191b4e631f2f6f672598d70359438d18d05884 - extra : histedit_source : ad3d624a38b1f0134cd286ea592586f23c52d21b ---- - layout/reftests/bugs/reftest.list | 2 +- - layout/reftests/css-disabled/select/reftest.list | 10 +++++----- - layout/reftests/css-invalid/select/reftest.list | 4 ++-- - layout/reftests/css-ui-invalid/select/reftest.list | 4 ++-- - layout/reftests/css-ui-valid/select/reftest.list | 4 ++-- - layout/reftests/css-valid/select/reftest.list | 4 ++-- - 6 files changed, 14 insertions(+), 14 deletions(-) - -diff --git layout/reftests/bugs/reftest.list layout/reftests/bugs/reftest.list -index 55eb7da5611f..7815eaf2b69d 100644 ---- layout/reftests/bugs/reftest.list -+++ layout/reftests/bugs/reftest.list -@@ -1502,7 +1502,7 @@ random != 553571-1.html 553571-1-notref.html # expect dotted circle in test, not - fuzzy-if(!contentSameGfxBackendAsCanvas,128,91) random-if(d2d) skip-if(azureSkiaGL) fuzzy-if(skiaContent,32,150) == 555388-1.html 555388-1-ref.html - == 556661-1.html 556661-1-ref.html - fuzzy-if(skiaContent,4,5) == 557087-1.html 557087-ref.html --fails-if(Android) fuzzy-if(skiaContent&&!Android,2,5) == 557087-2.html 557087-ref.html -+fuzzy-if(skiaContent&&!Android,2,5) == 557087-2.html 557087-ref.html - == 557736-1.html 557736-1-ref.html - != 558011-1.xul 558011-1-ref.xul - == 559284-1.html 559284-1-ref.html -diff --git layout/reftests/css-disabled/select/reftest.list layout/reftests/css-disabled/select/reftest.list -index 700f06471cda..d6abbd6bd903 100644 ---- layout/reftests/css-disabled/select/reftest.list -+++ layout/reftests/css-disabled/select/reftest.list -@@ -1,9 +1,9 @@ - fuzzy-if(Android,12,1) == select-fieldset-1.html select-fieldset-ref.html --fails-if(Android) fuzzy-if(skiaContent&&!Android,2,17) == select-fieldset-2.html select-fieldset-ref-disabled.html --fails-if(Android) fuzzy-if(skiaContent&&!Android,2,17) == select-fieldset-3.html select-fieldset-ref-disabled.html --fails-if(Android) fuzzy-if(skiaContent&&!Android,2,13) == select-fieldset-4.html select-fieldset-ref.html -+fuzzy-if(skiaContent&&!Android,2,17) == select-fieldset-2.html select-fieldset-ref-disabled.html -+fuzzy-if(skiaContent&&!Android,2,17) == select-fieldset-3.html select-fieldset-ref-disabled.html -+fuzzy-if(skiaContent&&!Android,2,13) == select-fieldset-4.html select-fieldset-ref.html - == select-fieldset-legend-1.html select-fieldset-legend-ref-1.html --fails-if(Android) fuzzy-if(skiaContent&&!Android,2,6) == select-fieldset-legend-2.html select-fieldset-legend-ref-2.html --fails-if(Android) fuzzy-if(skiaContent&&!Android,2,8) == select-fieldset-legend-3.html select-fieldset-legend-ref-3.html -+fuzzy-if(skiaContent&&!Android,2,6) == select-fieldset-legend-2.html select-fieldset-legend-ref-2.html -+fuzzy-if(skiaContent&&!Android,2,8) == select-fieldset-legend-3.html select-fieldset-legend-ref-3.html - fuzzy-if(skiaContent,2,12) == select-fieldset-legend-4.html select-fieldset-legend-ref-4.html - fuzzy-if(skiaContent,2,5) == select-fieldset-legend-5.html select-fieldset-legend-ref-5.html -diff --git layout/reftests/css-invalid/select/reftest.list layout/reftests/css-invalid/select/reftest.list -index 2d16e1603b0c..44bd631b6215 100644 ---- layout/reftests/css-invalid/select/reftest.list -+++ layout/reftests/css-invalid/select/reftest.list -@@ -7,6 +7,6 @@ needs-focus == select-required-invalid.html select-required-ref.html - needs-focus == select-required-valid.html select-required-ref.html - needs-focus == select-required-multiple-still-valid.html select-required-multiple-ref.html - fuzzy-if(skiaContent,1,250) needs-focus == select-required-multiple-valid.html select-required-multiple-ref.html --fails-if(Android) fuzzy-if(skiaContent&&!Android,1,3) needs-focus == select-disabled-fieldset-1.html select-fieldset-ref.html --fails-if(Android) fuzzy-if(skiaContent&&!Android,2,3) needs-focus == select-disabled-fieldset-2.html select-fieldset-ref.html -+fuzzy-if(skiaContent&&!Android,1,3) needs-focus == select-disabled-fieldset-1.html select-fieldset-ref.html -+fuzzy-if(skiaContent&&!Android,2,3) needs-focus == select-disabled-fieldset-2.html select-fieldset-ref.html - fuzzy-if(skiaContent,2,5) needs-focus == select-fieldset-legend.html select-fieldset-legend-ref.html -diff --git layout/reftests/css-ui-invalid/select/reftest.list layout/reftests/css-ui-invalid/select/reftest.list -index 1fd197793914..f0b298401ced 100644 ---- layout/reftests/css-ui-invalid/select/reftest.list -+++ layout/reftests/css-ui-invalid/select/reftest.list -@@ -12,7 +12,7 @@ fuzzy-if(skiaContent,2,5) needs-focus == select-required-valid.html select-requi - needs-focus == select-required-multiple-invalid.html select-required-multiple-ref.html - fuzzy-if(asyncPan&&!layersGPUAccelerated,84,77) fuzzy-if(skiaContent,1,1000) needs-focus == select-required-multiple-invalid-changed.html select-required-multiple-ref.html - needs-focus == select-required-multiple-valid.html select-required-multiple-ref.html --fails-if(Android) fuzzy-if(skiaContent&&!Android,2,10) needs-focus == select-disabled-fieldset-1.html select-fieldset-ref.html --fails-if(Android) fuzzy-if(skiaContent&&!Android,2,10) needs-focus == select-disabled-fieldset-2.html select-fieldset-ref.html -+fuzzy-if(skiaContent&&!Android,2,10) needs-focus == select-disabled-fieldset-1.html select-fieldset-ref.html -+fuzzy-if(skiaContent&&!Android,2,10) needs-focus == select-disabled-fieldset-2.html select-fieldset-ref.html - fuzzy-if(skiaContent,2,10) needs-focus == select-fieldset-legend.html select-fieldset-legend-ref.html - fuzzy-if(skiaContent,1,5) needs-focus == select-novalidate.html select-required-ref.html -diff --git layout/reftests/css-ui-valid/select/reftest.list layout/reftests/css-ui-valid/select/reftest.list -index 082a6fc0ce40..815cb4635ddb 100644 ---- layout/reftests/css-ui-valid/select/reftest.list -+++ layout/reftests/css-ui-valid/select/reftest.list -@@ -12,7 +12,7 @@ fuzzy-if(skiaContent,2,5) needs-focus == select-required-valid-changed-2.html se - needs-focus == select-required-multiple-invalid.html select-required-multiple-ref.html - needs-focus == select-required-multiple-valid.html select-required-multiple-ref.html - fuzzy(64,4) fuzzy-if(asyncPan&&layersGPUAccelerated,84,77) fuzzy-if(skiaContent,1,1000) needs-focus == select-required-multiple-valid-changed.html select-required-multiple-ref.html --fails-if(Android) needs-focus == select-disabled-fieldset-1.html select-fieldset-ref.html --fails-if(Android) fuzzy-if(skiaContent&&!Android,2,10) needs-focus == select-disabled-fieldset-2.html select-fieldset-ref.html -+needs-focus == select-disabled-fieldset-1.html select-fieldset-ref.html -+fuzzy-if(skiaContent&&!Android,2,10) needs-focus == select-disabled-fieldset-2.html select-fieldset-ref.html - fuzzy-if(skiaContent,2,10) needs-focus == select-fieldset-legend.html select-fieldset-legend-ref.html - fuzzy-if(skiaContent,2,5) needs-focus == select-novalidate.html select-required-ref.html -diff --git layout/reftests/css-valid/select/reftest.list layout/reftests/css-valid/select/reftest.list -index ac77e60d68a7..fc84eb8541c5 100644 ---- layout/reftests/css-valid/select/reftest.list -+++ layout/reftests/css-valid/select/reftest.list -@@ -7,6 +7,6 @@ needs-focus == select-required-invalid.html select-required-ref.html - needs-focus == select-required-valid.html select-required-ref.html - needs-focus == select-required-multiple-still-valid.html select-required-multiple-ref.html - fuzzy-if(skiaContent,1,250) needs-focus == select-required-multiple-valid.html select-required-multiple-ref.html --fails-if(Android) needs-focus == select-disabled-fieldset-1.html select-fieldset-ref.html --fails-if(Android) fuzzy-if(skiaContent&&!Android,1,3) needs-focus == select-disabled-fieldset-2.html select-fieldset-ref.html -+needs-focus == select-disabled-fieldset-1.html select-fieldset-ref.html -+fuzzy-if(skiaContent&&!Android,1,3) needs-focus == select-disabled-fieldset-2.html select-fieldset-ref.html - needs-focus == select-fieldset-legend.html select-fieldset-legend-ref.html diff --git a/www/waterfox/files/patch-bug1402025 b/www/waterfox/files/patch-bug1402025 deleted file mode 100644 index 841abfb757c0..000000000000 --- a/www/waterfox/files/patch-bug1402025 +++ /dev/null @@ -1,201 +0,0 @@ -commit a80cfb448ce3 -Author: Kirk Steuber -Date: Thu Sep 28 12:09:56 2017 -0700 - - Bug 1402025 - Ensure form submission flush when unsetting relevant attributes. r=bz, a=ritu - - It seems that we were flushing any pending submission when changing the action or target attributes of a form, but not when unsetting those attributes. - - MozReview-Commit-ID: E6aUnokg54k - - --HG-- - extra : source : 32fa20aaa56cfb063433ff46f202e99eb35043d7 ---- - dom/html/HTMLFormElement.cpp | 25 ++++----- - dom/html/test/browser.ini | 3 ++ - dom/html/test/browser_submission_flush.js | 85 +++++++++++++++++++++++++++++++ - dom/html/test/post_action_page.html | 10 ++++ - dom/html/test/submission_flush.html | 13 +++++ - 5 files changed, 122 insertions(+), 14 deletions(-) - -diff --git dom/html/HTMLFormElement.cpp dom/html/HTMLFormElement.cpp -index 6b87c8b54255..c9ff6ffc8f2a 100644 ---- dom/html/HTMLFormElement.cpp -+++ dom/html/HTMLFormElement.cpp -@@ -189,21 +189,18 @@ HTMLFormElement::BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName, - { - if (aNamespaceID == kNameSpaceID_None) { - if (aName == nsGkAtoms::action || aName == nsGkAtoms::target) { -- // This check is mostly to preserve previous behavior. -- if (aValue) { -- if (mPendingSubmission) { -- // aha, there is a pending submission that means we're in -- // the script and we need to flush it. let's tell it -- // that the event was ignored to force the flush. -- // the second argument is not playing a role at all. -- FlushPendingSubmission(); -- } -- // Don't forget we've notified the password manager already if the -- // page sets the action/target in the during submit. (bug 343182) -- bool notifiedObservers = mNotifiedObservers; -- ForgetCurrentSubmission(); -- mNotifiedObservers = notifiedObservers; -+ if (mPendingSubmission) { -+ // aha, there is a pending submission that means we're in -+ // the script and we need to flush it. let's tell it -+ // that the event was ignored to force the flush. -+ // the second argument is not playing a role at all. -+ FlushPendingSubmission(); - } -+ // Don't forget we've notified the password manager already if the -+ // page sets the action/target in the during submit. (bug 343182) -+ bool notifiedObservers = mNotifiedObservers; -+ ForgetCurrentSubmission(); -+ mNotifiedObservers = notifiedObservers; - } - } - -diff --git dom/html/test/browser.ini dom/html/test/browser.ini -index 34a32b833652..67754c995dfa 100644 ---- dom/html/test/browser.ini -+++ dom/html/test/browser.ini -@@ -6,6 +6,8 @@ support-files = - file_bug649778.html^headers^ - file_fullscreen-api-keys.html - file_content_contextmenu.html -+ submission_flush.html -+ post_action_page.html - form_data_file.bin - form_data_file.txt - form_submit_server.sjs -@@ -27,3 +29,4 @@ support-files = - tags = fullscreen - [browser_fullscreen-contextmenu-esc.js] - tags = fullscreen -+[browser_submission_flush.js] -diff --git dom/html/test/browser_submission_flush.js dom/html/test/browser_submission_flush.js -new file mode 100644 -index 000000000000..e3948e7071e8 ---- /dev/null -+++ dom/html/test/browser_submission_flush.js -@@ -0,0 +1,85 @@ -+"use strict"; -+// Form submissions triggered by the Javascript 'submit' event listener are -+// deferred until the event listener finishes. However, changes to specific -+// attributes ("action" and "target" attributes) need to cause an immediate -+// flush of any pending submission to prevent the form submission from using the -+// wrong action or target. This test ensures that such flushes happen properly. -+ -+const kTestPage = "http://example.org/browser/dom/html/test/submission_flush.html"; -+// This is the page pointed to by the form action in the test HTML page. -+const kPostActionPage = "http://example.org/browser/dom/html/test/post_action_page.html"; -+ -+const kFormId = "test_form" -+const kFrameId = "test_frame" -+const kSubmitButtonId = "submit_button" -+ -+// Take in a variety of actions (in the form of setting and unsetting form -+// attributes). Then submit the form in the submit event listener to cause a -+// deferred form submission. Then perform the test actions and ensure that the -+// form used the correct attribute values rather than the changed ones. -+async function runTest(aTestActions) { -+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, kTestPage); -+ registerCleanupFunction(() => BrowserTestUtils.removeTab(tab)); -+ -+ let frame_url = await ContentTask.spawn(gBrowser.selectedBrowser, -+ {kFormId, kFrameId, kSubmitButtonId, aTestActions}, -+ async function({kFormId, kFrameId, kSubmitButtonId, -+ aTestActions}) { -+ let form = content.document.getElementById(kFormId); -+ -+ form.addEventListener("submit", (event) => { -+ // Need to trigger the deferred submission by submitting in the submit -+ // event handler. To prevent the form from being submitted twice, the -+ //
tag contains the attribute |onsubmit="return false;"| to cancel -+ // the original submission. -+ form.submit(); -+ -+ if (aTestActions.setattr) { -+ for (let {attr, value} of aTestActions.setattr) { -+ form.setAttribute(attr, value); -+ } -+ } -+ if (aTestActions.unsetattr) { -+ for (let attr of aTestActions.unsetattr) { -+ form.removeAttribute(attr); -+ } -+ } -+ }, {capture: true, once: true}); -+ -+ // Trigger the above event listener -+ content.document.getElementById(kSubmitButtonId).click(); -+ -+ // Test that the form was submitted to the correct target (the frame) with -+ // the correct action (kPostActionPage). -+ let frame = content.document.getElementById(kFrameId); -+ await new Promise(resolve => { -+ frame.addEventListener("load", resolve, {once: true}); -+ }); -+ return frame.contentWindow.location.href; -+ }); -+ is(frame_url, kPostActionPage, -+ "Form should have submitted with correct target and action"); -+} -+ -+add_task(async function() { -+ info("Changing action should flush pending submissions"); -+ await runTest({setattr: [{attr: "action", value: "about:blank"}]}); -+}); -+ -+add_task(async function() { -+ info("Changing target should flush pending submissions"); -+ await runTest({setattr: [{attr: "target", value: "_blank"}]}); -+}); -+ -+add_task(async function() { -+ info("Unsetting action should flush pending submissions"); -+ await runTest({unsetattr: ["action"]}); -+}); -+ -+// On failure, this test will time out rather than failing an assert. When the -+// target attribute is not set, the form will submit the active page, navigating -+// it away and preventing the wait for iframe load from ever finishing. -+add_task(async function() { -+ info("Unsetting target should flush pending submissions"); -+ await runTest({unsetattr: ["target"]}); -+}); -diff --git dom/html/test/post_action_page.html dom/html/test/post_action_page.html -new file mode 100644 -index 000000000000..ba6ae514f2e9 ---- /dev/null -+++ dom/html/test/post_action_page.html -@@ -0,0 +1,10 @@ -+ -+ -+ -+ -+ Submission Flush Test Post Action Page -+ -+ -+

Post Action Page

-+ -+ -diff --git dom/html/test/submission_flush.html dom/html/test/submission_flush.html -new file mode 100644 -index 000000000000..f70884c66ac8 ---- /dev/null -+++ dom/html/test/submission_flush.html -@@ -0,0 +1,13 @@ -+ -+ -+ -+ -+ Submission Flush Test -+ -+ -+ -+ -+
-+ -+ -+ diff --git a/www/waterfox/files/patch-bug1402094 b/www/waterfox/files/patch-bug1402094 deleted file mode 100644 index b901b43f5f13..000000000000 --- a/www/waterfox/files/patch-bug1402094 +++ /dev/null @@ -1,57 +0,0 @@ -commit 447413f00860 -Author: Xidorn Quan -Date: Thu Sep 28 16:19:45 2017 +1000 - - Bug 1402094 - Blacklist about:reader from using stylo. r=bholley, a=sledru - - MozReview-Commit-ID: 6cG1x1tcOwn - - --HG-- - extra : source : 813556d9e389f580d8e6efa9c24825edec952259 ---- - dom/base/nsDocument.cpp | 25 ++++++++++++++++++++++++- - 1 file changed, 24 insertions(+), 1 deletion(-) - -diff --git dom/base/nsDocument.cpp dom/base/nsDocument.cpp -index 07ef9ef817b7..7f8ebecffa97 100644 ---- dom/base/nsDocument.cpp -+++ dom/base/nsDocument.cpp -@@ -13575,6 +13575,29 @@ nsIDocument::ReportHasScrollLinkedEffect() - "ScrollLinkedEffectFound2"); - } - -+#ifdef MOZ_STYLO -+// URL-based blacklist for stylo. -+static bool -+ShouldUseGeckoBackend(nsIURI* aDocumentURI) -+{ -+ if (!aDocumentURI) { -+ return false; -+ } -+ bool isScheme = false; -+ if (NS_SUCCEEDED(aDocumentURI->SchemeIs("about", &isScheme))) { -+ nsAutoCString path; -+ aDocumentURI->GetFilePath(path); -+ // about:reader requires support of :scope pseudo-class so we have -+ // to use Gecko backend for now. See bug 1402094. -+ // This should be fixed by bug 1204818. -+ if (path.EqualsLiteral("reader")) { -+ return true; -+ } -+ } -+ return false; -+} -+#endif // MOZ_STYLO -+ - void - nsIDocument::UpdateStyleBackendType() - { -@@ -13593,7 +13616,7 @@ nsIDocument::UpdateStyleBackendType() - // Note that, since tests can have XUL support, we still need to - // explicitly exclude XUL documents here. - if (!nsContentUtils::IsSystemPrincipal(NodePrincipal()) && -- !IsXULDocument()) { -+ !IsXULDocument() && !ShouldUseGeckoBackend(mDocumentURI)) { - mStyleBackendType = StyleBackendType::Servo; - } - } diff --git a/www/waterfox/files/patch-bug1402205 b/www/waterfox/files/patch-bug1402205 deleted file mode 100644 index a91f52251035..000000000000 --- a/www/waterfox/files/patch-bug1402205 +++ /dev/null @@ -1,77 +0,0 @@ -commit 86b6592ab804 -Author: Haik Aftandilian -Date: Mon Sep 25 15:48:40 2017 -0700 - - Bug 1402205 - Non-existent background page blocks extension startup. r=kmag, a=sledru - - Add calls to OnStartRequest() and OnStopRequest() to properly handle async - read failures for remote JAR's and remote unpacked extension resources. - - MozReview-Commit-ID: Dcg0LDht9B9 - - --HG-- - extra : source : 611582e42451dd26fcaa38f251e2203a6e8b0bf9 ---- - netwerk/protocol/res/ExtensionProtocolHandler.cpp | 23 +++++++++++++++++------ - 1 file changed, 17 insertions(+), 6 deletions(-) - -diff --git netwerk/protocol/res/ExtensionProtocolHandler.cpp netwerk/protocol/res/ExtensionProtocolHandler.cpp -index 326c21d13057..a2d900f95b96 100644 ---- netwerk/protocol/res/ExtensionProtocolHandler.cpp -+++ netwerk/protocol/res/ExtensionProtocolHandler.cpp -@@ -253,6 +253,19 @@ ExtensionStreamGetter::GetAsync(nsIStreamListener* aListener, - return Ok(); - } - -+static void -+CancelRequest(nsIStreamListener* aListener, -+ nsIChannel* aChannel, -+ nsresult aResult) -+{ -+ MOZ_ASSERT(aListener); -+ MOZ_ASSERT(aChannel); -+ -+ aListener->OnStartRequest(aChannel, nullptr); -+ aListener->OnStopRequest(aChannel, nullptr, aResult); -+ aChannel->Cancel(NS_BINDING_ABORTED); -+} -+ - // Handle an input stream sent from the parent. - void - ExtensionStreamGetter::OnStream(nsIInputStream* aStream) -@@ -269,9 +282,7 @@ ExtensionStreamGetter::OnStream(nsIInputStream* aStream) - - if (!aStream) { - // The parent didn't send us back a stream. -- listener->OnStartRequest(mChannel, nullptr); -- listener->OnStopRequest(mChannel, nullptr, NS_ERROR_FILE_ACCESS_DENIED); -- mChannel->Cancel(NS_BINDING_ABORTED); -+ CancelRequest(listener, mChannel, NS_ERROR_FILE_ACCESS_DENIED); - return; - } - -@@ -279,13 +290,13 @@ ExtensionStreamGetter::OnStream(nsIInputStream* aStream) - nsresult rv = NS_NewInputStreamPump(getter_AddRefs(pump), aStream, -1, -1, 0, - 0, false, mMainThreadEventTarget); - if (NS_FAILED(rv)) { -- mChannel->Cancel(NS_BINDING_ABORTED); -+ CancelRequest(listener, mChannel, rv); - return; - } - - rv = pump->AsyncRead(listener, nullptr); - if (NS_FAILED(rv)) { -- mChannel->Cancel(NS_BINDING_ABORTED); -+ CancelRequest(listener, mChannel, rv); - } - } - -@@ -310,7 +321,7 @@ ExtensionStreamGetter::OnFD(const FileDescriptor& aFD) - mJarChannel->SetJarFile(fdFile); - nsresult rv = mJarChannel->AsyncOpen2(listener); - if (NS_FAILED(rv)) { -- mChannel->Cancel(NS_BINDING_ABORTED); -+ CancelRequest(listener, mChannel, rv); - } - } - diff --git a/www/waterfox/files/patch-bug1402218 b/www/waterfox/files/patch-bug1402218 deleted file mode 100644 index e407960ef94b..000000000000 --- a/www/waterfox/files/patch-bug1402218 +++ /dev/null @@ -1,91 +0,0 @@ -commit 3ddaaf254633 -Author: Boris Zbarsky -Date: Thu Sep 28 22:04:34 2017 -0400 - - Bug 1402218 - Make sure to clone our CSSDeclaration as needed when removing properties. r=emilio, a=sledru - - MozReview-Commit-ID: 6LRjLU3QQok - - --HG-- - extra : source : 76b6ae2fc6eb389810cb2a745f976be11516eb44 - extra : amend_source : 849900fa9c4e12b62cf73175666a672ca6ab3914 ---- - layout/style/DeclarationBlockInlines.h | 9 +++++++++ - layout/style/crashtests/1402218-1.html | 15 +++++++++++++++ - layout/style/crashtests/crashtests.list | 3 ++- - layout/style/nsDOMCSSDeclaration.cpp | 12 +----------- - 4 files changed, 27 insertions(+), 12 deletions(-) - -diff --git layout/style/DeclarationBlockInlines.h layout/style/DeclarationBlockInlines.h -index 5438bd1957c2..c9e0d4f82e31 100644 ---- layout/style/DeclarationBlockInlines.h -+++ layout/style/DeclarationBlockInlines.h -@@ -46,6 +46,15 @@ DeclarationBlock::EnsureMutable() - AsGecko()->AssertNotExpanded(); - } - #endif -+ if (IsServo() && !IsDirty()) { -+ // In stylo, the old DeclarationBlock is stored in element's rule node tree -+ // directly, to avoid new values replacing the DeclarationBlock in the tree -+ // directly, we need to copy the old one here if we haven't yet copied. -+ // As a result the new value does not replace rule node tree until traversal -+ // happens. -+ return Clone(); -+ } -+ - if (!IsMutable()) { - return Clone(); - } -diff --git layout/style/crashtests/1402218-1.html layout/style/crashtests/1402218-1.html -new file mode 100644 -index 000000000000..597c1c4d5e53 ---- /dev/null -+++ layout/style/crashtests/1402218-1.html -@@ -0,0 +1,15 @@ -+ -+ -+ -+
-+
-+
-+ -+ -diff --git layout/style/crashtests/crashtests.list layout/style/crashtests/crashtests.list -index e0a7fe4a20c5..ab9b5a7a9a4e 100644 ---- layout/style/crashtests/crashtests.list -+++ layout/style/crashtests/crashtests.list -@@ -202,3 +202,4 @@ load 1387481-1.html - load 1387499.html - load 1391577.html - load 1398581.html -+load 1402218-1.html -diff --git layout/style/nsDOMCSSDeclaration.cpp layout/style/nsDOMCSSDeclaration.cpp -index a828f0e7b3dd..12e03c314fe9 100644 ---- layout/style/nsDOMCSSDeclaration.cpp -+++ layout/style/nsDOMCSSDeclaration.cpp -@@ -305,17 +305,7 @@ nsDOMCSSDeclaration::ModifyDeclaration(GeckoFunc aGeckoFunc, - // between when we mutate the declaration and when we set the new - // rule (see stack in bug 209575). - mozAutoDocConditionalContentUpdateBatch autoUpdate(DocToUpdate(), true); -- RefPtr decl; -- if (olddecl->IsServo() && !olddecl->IsDirty()) { -- // In stylo, the old DeclarationBlock is stored in element's rule node tree -- // directly, to avoid new values replacing the DeclarationBlock in the tree -- // directly, we need to copy the old one here if we haven't yet copied. -- // As a result the new value does not replace rule node tree until traversal -- // happens. -- decl = olddecl->Clone(); -- } else { -- decl = olddecl->EnsureMutable(); -- } -+ RefPtr decl = olddecl->EnsureMutable(); - - bool changed; - if (decl->IsGecko()) { diff --git a/www/waterfox/files/patch-bug1402366 b/www/waterfox/files/patch-bug1402366 deleted file mode 100644 index 393c36e27ef0..000000000000 --- a/www/waterfox/files/patch-bug1402366 +++ /dev/null @@ -1,87 +0,0 @@ -commit 0211305e7012 -Author: Emilio Cobos Álvarez -Date: Fri Sep 22 21:23:11 2017 +0200 - - Bug 1402366 - Mark datetimebox as not needing xul.css. r=bholley, r=jessica, a=sledru - - We create a datetimebox in content documents that gets an XBL binding on - nsDateTimeControlFrame::CreateAnonymousContent. - - This is done during frame construction, and loading a datetimebox insert xul.css - in the document, which causes invalidation to run. - - datetimebox styles are in html.css, and there's no rule in xul.css that styles - it, so we don't need to load the stylesheet at all. - - MozReview-Commit-ID: 2SbIOoER2uB - - --HG-- - extra : source : 5b642e09aacd450f7ea2b667d2d453a701a30e15 ---- - dom/xul/nsXULElement.cpp | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - -diff --git dom/xul/nsXULElement.cpp dom/xul/nsXULElement.cpp -index f1a87e917182..2c3574cd6580 100644 ---- dom/xul/nsXULElement.cpp -+++ dom/xul/nsXULElement.cpp -@@ -696,6 +696,7 @@ static inline bool XULElementsRulesInMinimalXULSheet(nsIAtom* aTag) - aTag == nsGkAtoms::thumb || - aTag == nsGkAtoms::scale || - // other -+ aTag == nsGkAtoms::datetimebox || - aTag == nsGkAtoms::resizer || - aTag == nsGkAtoms::label || - aTag == nsGkAtoms::videocontrols; -@@ -810,9 +811,7 @@ nsXULElement::BindToTree(nsIDocument* aDocument, - // pulling in xul.css. - // Note that add-ons may introduce bindings that cause this assertion to - // fire. -- NS_ASSERTION(IsInVideoControls(this) || -- IsInFeedSubscribeLine(this) || -- IsXULElement(nsGkAtoms::datetimebox), -+ NS_ASSERTION(IsInVideoControls(this) || IsInFeedSubscribeLine(this), - "Unexpected XUL element in non-XUL doc"); - } - } - -commit 07adf4398955 -Author: Emilio Cobos Álvarez -Date: Mon Sep 25 10:16:36 2017 +0200 - - Bug 1402366 - Crashtest. r=me, a=sledru - - MozReview-Commit-ID: 8ZcVBHKNntj - - --HG-- - extra : source : 7fde3082d44b416af788f2ba09834fb3403eb8ff ---- - layout/style/crashtests/1402366.html | 10 ++++++++++ - layout/style/crashtests/crashtests.list | 1 + - 2 files changed, 11 insertions(+) - -diff --git layout/style/crashtests/1402366.html layout/style/crashtests/1402366.html -new file mode 100644 -index 000000000000..9cffd08f0415 ---- /dev/null -+++ layout/style/crashtests/1402366.html -@@ -0,0 +1,10 @@ -+ -diff --git layout/style/crashtests/crashtests.list layout/style/crashtests/crashtests.list -index 9cd557a44187..be05f417d6aa 100644 ---- layout/style/crashtests/crashtests.list -+++ layout/style/crashtests/crashtests.list -@@ -203,3 +203,4 @@ load 1387499.html - load 1391577.html - load 1398581.html - load 1402218-1.html -+load 1402366.html diff --git a/www/waterfox/files/patch-bug1402377 b/www/waterfox/files/patch-bug1402377 deleted file mode 100644 index 6d5322defb37..000000000000 --- a/www/waterfox/files/patch-bug1402377 +++ /dev/null @@ -1,36 +0,0 @@ -commit 9e374938aaac -Author: Munro Mengjue Chiang -Date: Wed Sep 27 10:16:46 2017 +0800 - - Bug 1402377 - Stop the corresponding track instead of the whole stream when an external device is plugged out. r=jib, r=pehrsons, a=ritu - - MozReview-Commit-ID: 7gbB5sgn6xI - - --HG-- - extra : source : 140805019de38dbfbb9f4fe363de8d7c8a52d387 - extra : histedit_source : 9f60927d8c7dfba265a60497b305e65eeb28939b ---- - dom/media/MediaManager.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git dom/media/MediaManager.cpp dom/media/MediaManager.cpp -index a06296086a28..6b37fa4206a2 100644 ---- dom/media/MediaManager.cpp -+++ dom/media/MediaManager.cpp -@@ -4067,14 +4067,14 @@ GetUserMediaWindowListener::StopRawID(const nsString& removedDeviceID) - nsString id; - source->GetAudioDevice()->GetRawId(id); - if (removedDeviceID.Equals(id)) { -- source->Stop(); -+ source->StopTrack(kAudioTrack); - } - } - if (source->GetVideoDevice()) { - nsString id; - source->GetVideoDevice()->GetRawId(id); - if (removedDeviceID.Equals(id)) { -- source->Stop(); -+ source->StopTrack(kVideoTrack); - } - } - } diff --git a/www/waterfox/files/patch-bug1402380 b/www/waterfox/files/patch-bug1402380 deleted file mode 100644 index cb0f76b6caa2..000000000000 --- a/www/waterfox/files/patch-bug1402380 +++ /dev/null @@ -1,257 +0,0 @@ -commit fb06fdcf7d66 -Author: Tooru Fujisawa -Date: Sun Mar 25 17:23:48 2018 +0900 - - Bug 1402380 - Set text/x-moz-url flavor of data transfer for places container with URLs inside it. r=enndeakin, a=jcristau - - --HG-- - extra : source : e4cc022b417a1268fa063fe054aa79f3c141c2e2 ---- - .../components/places/tests/browser/browser.ini | 1 + - .../tests/browser/browser_drag_folder_on_newTab.js | 94 ++++++++++++++++++++++ - testing/mochitest/tests/SimpleTest/EventUtils.js | 86 ++++++++++++++++++++ - toolkit/components/places/PlacesUtils.jsm | 11 ++- - 4 files changed, 191 insertions(+), 1 deletion(-) - -diff --git browser/components/places/tests/browser/browser.ini browser/components/places/tests/browser/browser.ini -index 64b7782c5f83..33c4cf5cc416 100644 ---- browser/components/places/tests/browser/browser.ini -+++ browser/components/places/tests/browser/browser.ini -@@ -63,3 +63,4 @@ support-files = - support-files = - bookmark_dummy_1.html - bookmark_dummy_2.html -+[browser_drag_folder_on_newTab.js] -diff --git browser/components/places/tests/browser/browser_drag_folder_on_newTab.js browser/components/places/tests/browser/browser_drag_folder_on_newTab.js -new file mode 100644 -index 000000000000..00646fff18b4 ---- /dev/null -+++ browser/components/places/tests/browser/browser_drag_folder_on_newTab.js -@@ -0,0 +1,94 @@ -+/* Any copyright is dedicated to the Public Domain. -+ * http://creativecommons.org/publicdomain/zero/1.0/ */ -+ -+"use strict"; -+ -+add_task(async function setup() { -+ let toolbar = document.getElementById("PersonalToolbar"); -+ let wasCollapsed = toolbar.collapsed; -+ -+ // Uncollapse the personal toolbar if needed. -+ if (wasCollapsed) { -+ await promiseSetToolbarVisibility(toolbar, true); -+ } -+ -+ // Clean before and after so we don't have anything in the folders. -+ await PlacesUtils.bookmarks.eraseEverything(); -+ -+ registerCleanupFunction(async function() { -+ // Collapse the personal toolbar if needed. -+ if (wasCollapsed) { -+ await promiseSetToolbarVisibility(toolbar, false); -+ } -+ -+ await PlacesUtils.bookmarks.eraseEverything(); -+ }); -+}); -+ -+const TEST_FOLDER_NAME = "Test folder"; -+ -+add_task(async function test_change_location_from_Toolbar() { -+ let newTabButton = document.getElementById("new-tab-button"); -+ -+ let children = [ -+ { -+ title: "first", -+ url: "http://www.mochi.test/first" -+ }, -+ { -+ title: "second", -+ url: "http://www.mochi.test/second" -+ }, -+ { -+ type: PlacesUtils.bookmarks.TYPE_SEPARATOR, -+ }, -+ { -+ title: "third", -+ url: "http://www.mochi.test/third" -+ }, -+ ]; -+ let guid = PlacesUtils.history.makeGuid(); -+ await PlacesUtils.bookmarks.insertTree({ -+ guid: PlacesUtils.bookmarks.toolbarGuid, -+ children: [ -+ { -+ guid, -+ type: PlacesUtils.bookmarks.TYPE_FOLDER, -+ title: TEST_FOLDER_NAME, -+ children, -+ }, -+ ], -+ }); -+ -+ let folder = getToolbarNodeForItemGuid(guid); -+ -+ let loadedPromises = children.filter(item => "url" in item).map( -+ item => BrowserTestUtils.waitForNewTab(gBrowser, item.url, false, true)); -+ -+ let srcX = 10, srcY = 10; -+ // We should drag upwards, since dragging downwards opens menu instead. -+ let stepX = 0, stepY = -5; -+ -+ // We need to dispatch mousemove before dragging, to populate -+ // PlacesToolbar._cachedMouseMoveEvent, with the cursor position after the -+ // first step, so that the places code detects it as dragging upward. -+ EventUtils.synthesizeMouse(folder, srcX + stepX, srcY + stepY, -+ { type: "mousemove" }); -+ -+ await EventUtils.synthesizePlainDragAndDrop({ -+ srcElement: folder, -+ destElement: newTabButton, -+ srcX, -+ srcY, -+ stepX, -+ stepY, -+ }); -+ -+ let tabs = await Promise.all(loadedPromises); -+ -+ for (let tab of tabs) { -+ BrowserTestUtils.removeTab(tab); -+ } -+ -+ ok(true); -+}); -diff --git testing/mochitest/tests/SimpleTest/EventUtils.js testing/mochitest/tests/SimpleTest/EventUtils.js -index cad43966d91d..907cf60dc254 100644 ---- testing/mochitest/tests/SimpleTest/EventUtils.js -+++ testing/mochitest/tests/SimpleTest/EventUtils.js -@@ -17,6 +17,7 @@ - * synthesizeMouseExpectEvent - * synthesizeKeyExpectEvent - * synthesizeNativeOSXClick -+ * synthesizePlainDragAndDrop - * - * When adding methods to this file, please add a performance test for it. - */ -@@ -2161,6 +2162,91 @@ function synthesizeDrop(aSrcElement, aDestElement, aDragData, aDropEffect, aWind - } - } - -+/** -+ * Emulate a drag and drop by emulating a dragstart by mousedown and mousemove, -+ * and firing events dragenter, dragover, drop, and mouseup. -+ * This does not modify dataTransfer and tries to emulate the plain drag and -+ * drop as much as possible, compared to synthesizeDrop. -+ * -+ * @param aParams -+ * { -+ * srcElement: The element to start dragging -+ * destElement: The element to drop on -+ * srcX: The initial x coordinate inside srcElement -+ * srcY: The initial y coordinate inside srcElement -+ * stepX: The x-axis step for mousemove inside srcElement -+ * stepY: The y-axis step for mousemove inside srcElement -+ * destX: The x coordinate inside destElement -+ * destY: The x coordinate inside destElement -+ * srcWindow: The window for dispatching event on srcElement, -+ * defaults to the current window object -+ * destWindow: The window for dispatching event on destElement, -+ * defaults to the current window object -+ * } -+ */ -+async function synthesizePlainDragAndDrop(aParams) -+{ -+ let { -+ srcElement, -+ destElement, -+ srcX = 2, -+ srcY = 2, -+ stepX = 9, -+ stepY = 9, -+ destX = 2, -+ destY = 2, -+ srcWindow = window, -+ destWindow = window, -+ } = aParams; -+ -+ const ds = _EU_Cc["@mozilla.org/widget/dragservice;1"] -+ .getService(_EU_Ci.nsIDragService); -+ ds.startDragSession(); -+ -+ try { -+ let dataTransfer = null; -+ function trapDrag(aEvent) { -+ dataTransfer = aEvent.dataTransfer; -+ } -+ srcElement.addEventListener("dragstart", trapDrag, true); -+ synthesizeMouse(srcElement, srcX, srcY, { type: "mousedown" }, srcWindow); -+ -+ // Wait for the next event tick after each event dispatch, so that UI elements -+ // (e.g. menu) work like the real user input. -+ await new Promise(r => setTimeout(r, 0)); -+ -+ srcX += stepX; srcY += stepY; -+ synthesizeMouse(srcElement, srcX, srcY, { type: "mousemove" }, srcWindow); -+ -+ await new Promise(r => setTimeout(r, 0)); -+ -+ srcX += stepX; srcY += stepY; -+ synthesizeMouse(srcElement, srcX, srcY, { type: "mousemove" }, srcWindow); -+ -+ await new Promise(r => setTimeout(r, 0)); -+ -+ srcElement.removeEventListener("dragstart", trapDrag, true); -+ -+ await new Promise(r => setTimeout(r, 0)); -+ -+ let event = createDragEventObject("dragover", destElement, destWindow, -+ dataTransfer, {}); -+ sendDragEvent(event, destElement, destWindow); -+ -+ await new Promise(r => setTimeout(r, 0)); -+ -+ event = createDragEventObject("drop", destElement, destWindow, -+ dataTransfer, {}); -+ sendDragEvent(event, destElement, destWindow); -+ -+ await new Promise(r => setTimeout(r, 0)); -+ -+ synthesizeMouseAtCenter(destElement, { type: "mouseup" }, destWindow); -+ } finally { -+ ds.endDragSession(true, 0); -+ } -+} -+ - var PluginUtils = - { - withTestPlugin : function(callback) -diff --git toolkit/components/places/PlacesUtils.jsm toolkit/components/places/PlacesUtils.jsm -index f6315f68eb4c..5aebe0496ee8 100644 ---- toolkit/components/places/PlacesUtils.jsm -+++ toolkit/components/places/PlacesUtils.jsm -@@ -896,6 +896,11 @@ this.PlacesUtils = { - case this.TYPE_X_MOZ_URL: { - if (aFeedURI || PlacesUtils.nodeIsURI(aNode)) - return (aFeedURI || aNode.uri) + NEWLINE + aNode.title; -+ if (PlacesUtils.nodeIsContainer(aNode)) { -+ return PlacesUtils.getURLsForContainerNode(aNode) -+ .map(item => item.uri + "\n" + item.title) -+ .join("\n"); -+ } - return ""; - } - case this.TYPE_HTML: { -@@ -1491,7 +1496,11 @@ this.PlacesUtils = { - for (let i = 0; i < root.childCount; ++i) { - let child = root.getChild(i); - if (this.nodeIsURI(child)) -- urls.push({uri: child.uri, isBookmark: this.nodeIsBookmark(child)}); -+ urls.push({ -+ uri: child.uri, -+ isBookmark: this.nodeIsBookmark(child), -+ title: child.title, -+ }); - } - - if (!wasOpen) { diff --git a/www/waterfox/files/patch-bug1402442 b/www/waterfox/files/patch-bug1402442 deleted file mode 100644 index 18bf1c88ca47..000000000000 --- a/www/waterfox/files/patch-bug1402442 +++ /dev/null @@ -1,181 +0,0 @@ -commit 44b4458e2d21 -Author: Emilio Cobos Álvarez -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 - - --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 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 @@ -+ -+ -+CSS Reftest Reference -+ -+ -+

-+ Test passes if there is no red text and no red border. -+

-+
-+
-+
-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 @@ -+ -+ -+CSS Test: Dynamic changes to display: contents generated content in fieldsets. -+ -+ -+ -+ -+

-+ Test passes if there is no red text and no red border. -+

-+
-+
-+
-+ diff --git a/www/waterfox/files/patch-bug1402469 b/www/waterfox/files/patch-bug1402469 deleted file mode 100644 index 4dae69a93f04..000000000000 --- a/www/waterfox/files/patch-bug1402469 +++ /dev/null @@ -1,182 +0,0 @@ -commit 6b4f644b9a4e -Author: Makoto Kato -Date: Mon Sep 25 14:15:50 2017 +0900 - - Bug 1402469 - Part 1. Return value of ConvertListType should use Element instead of nsresult. r=masayuki, a=sledru - - This is a typo bug of Bug 1053779 Part 2. ConvertListType might return NS_OK - even if ReplaceContainer doesn't return valid value. - - So, to clean up code, we should return Element instead of nsresult since out - parameter of this function is Element only. - - MozReview-Commit-ID: 44UHETzcdGy - - --HG-- - extra : source : 5efdecc086858b4b4e5b0fcf9b7f27ef63d91738 ---- - editor/libeditor/HTMLEditRules.cpp | 47 +++++++++++++++++--------------------- - editor/libeditor/HTMLEditRules.h | 4 ++-- - 2 files changed, 23 insertions(+), 28 deletions(-) - -diff --git editor/libeditor/HTMLEditRules.cpp editor/libeditor/HTMLEditRules.cpp -index ad613517269d..fdb15fec7b2f 100644 ---- editor/libeditor/HTMLEditRules.cpp -+++ editor/libeditor/HTMLEditRules.cpp -@@ -2960,9 +2960,8 @@ HTMLEditRules::TryToJoinBlocks(nsIContent& aLeftNode, - // Nodes are same type. merge them. - EditorDOMPoint pt = JoinNodesSmart(*leftBlock, *rightBlock); - if (pt.node && mergeLists) { -- nsCOMPtr newBlock; -- ConvertListType(rightBlock, getter_AddRefs(newBlock), -- existingList, nsGkAtoms::li); -+ RefPtr newBlock = -+ ConvertListType(rightBlock, existingList, nsGkAtoms::li); - } - ret.MarkAsHandled(); - } else { -@@ -3320,18 +3319,19 @@ HTMLEditRules::WillMakeList(Selection* aSelection, - NS_ENSURE_STATE(mHTMLEditor); - rv = mHTMLEditor->MoveNode(curNode, curList, -1); - NS_ENSURE_SUCCESS(rv, rv); -- rv = ConvertListType(curNode->AsElement(), getter_AddRefs(newBlock), -- listType, itemType); -- NS_ENSURE_SUCCESS(rv, rv); -+ newBlock = ConvertListType(curNode->AsElement(), listType, itemType); -+ if (NS_WARN_IF(!newBlock)) { -+ return NS_ERROR_FAILURE; -+ } - NS_ENSURE_STATE(mHTMLEditor); - rv = mHTMLEditor->RemoveBlockContainer(*newBlock); - NS_ENSURE_SUCCESS(rv, rv); - } else { - // replace list with new list type -- rv = ConvertListType(curNode->AsElement(), getter_AddRefs(newBlock), -- listType, itemType); -- NS_ENSURE_SUCCESS(rv, rv); -- curList = newBlock; -+ curList = ConvertListType(curNode->AsElement(), listType, itemType); -+ if (NS_WARN_IF(!curList)) { -+ return NS_ERROR_FAILURE; -+ } - } - prevListItem = nullptr; - continue; -@@ -4495,14 +4495,12 @@ HTMLEditRules::OutdentPartOfBlock(Element& aBlock, - /** - * ConvertListType() converts list type and list item type. - */ --nsresult -+already_AddRefed - HTMLEditRules::ConvertListType(Element* aList, -- Element** aOutList, - nsIAtom* aListType, - nsIAtom* aItemType) - { - MOZ_ASSERT(aList); -- MOZ_ASSERT(aOutList); - MOZ_ASSERT(aListType); - MOZ_ASSERT(aItemType); - -@@ -4513,29 +4511,26 @@ HTMLEditRules::ConvertListType(Element* aList, - if (HTMLEditUtils::IsListItem(element) && - !element->IsHTMLElement(aItemType)) { - child = mHTMLEditor->ReplaceContainer(element, aItemType); -- NS_ENSURE_STATE(child); -+ if (NS_WARN_IF(!child)) { -+ return nullptr; -+ } - } else if (HTMLEditUtils::IsList(element) && - !element->IsHTMLElement(aListType)) { -- nsCOMPtr temp; -- nsresult rv = ConvertListType(child->AsElement(), getter_AddRefs(temp), -- aListType, aItemType); -- NS_ENSURE_SUCCESS(rv, rv); -- child = temp.forget(); -+ child = ConvertListType(child->AsElement(), aListType, aItemType); -+ if (NS_WARN_IF(!child)) { -+ return nullptr; -+ } - } - } - child = child->GetNextSibling(); - } - - if (aList->IsHTMLElement(aListType)) { -- nsCOMPtr list = aList->AsElement(); -- list.forget(aOutList); -- return NS_OK; -+ RefPtr list = aList->AsElement(); -+ return list.forget(); - } - -- *aOutList = mHTMLEditor->ReplaceContainer(aList, aListType).take(); -- NS_ENSURE_STATE(aOutList); -- -- return NS_OK; -+ return mHTMLEditor->ReplaceContainer(aList, aListType); - } - - -diff --git editor/libeditor/HTMLEditRules.h editor/libeditor/HTMLEditRules.h -index d1bb1fa7e3b2..0dde7f01e408 100644 ---- editor/libeditor/HTMLEditRules.h -+++ editor/libeditor/HTMLEditRules.h -@@ -316,8 +316,8 @@ protected: - nsIContent** aOutLeftNode, - nsIContent** aOutRightNode); - -- nsresult ConvertListType(Element* aList, Element** aOutList, -- nsIAtom* aListType, nsIAtom* aItemType); -+ already_AddRefed ConvertListType(Element* aList, nsIAtom* aListType, -+ nsIAtom* aItemType); - - nsresult CreateStyleForInsertText(Selection& aSelection, nsIDocument& aDoc); - enum class MozBRCounts { yes, no }; - -commit 5e5f298b8e42 -Author: Makoto Kato -Date: Mon Sep 25 14:11:29 2017 +0900 - - Bug 1402469 - Part 2. Add crash test. r=masayuki, a=sledru - - MozReview-Commit-ID: HogVH2OTyd6 - - --HG-- - extra : source : 5e311cd7074e6b649187f5a79371f0681c2d7504 ---- - editor/libeditor/crashtests/1402469.html | 16 ++++++++++++++++ - editor/libeditor/crashtests/crashtests.list | 1 + - 2 files changed, 17 insertions(+) - -diff --git editor/libeditor/crashtests/1402469.html editor/libeditor/crashtests/1402469.html -new file mode 100644 -index 000000000000..04b1adc96f25 ---- /dev/null -+++ editor/libeditor/crashtests/1402469.html -@@ -0,0 +1,16 @@ -+ -+ -+ -+ -+ -+ -+ -+
-+
    -+
-+ -+ -diff --git editor/libeditor/crashtests/crashtests.list editor/libeditor/crashtests/crashtests.list -index 11672c41d102..840e26f2fe62 100644 ---- editor/libeditor/crashtests/crashtests.list -+++ editor/libeditor/crashtests/crashtests.list -@@ -80,3 +80,4 @@ load 1366176.html - load 1375131.html - load 1381541.html - load 1383755.html -+load 1402469.html diff --git a/www/waterfox/files/patch-bug1402681 b/www/waterfox/files/patch-bug1402681 deleted file mode 100644 index 6fddbdf9937d..000000000000 --- a/www/waterfox/files/patch-bug1402681 +++ /dev/null @@ -1,138 +0,0 @@ -commit ffcf40b7a0e9 -Author: Alastor Wu -Date: Tue Sep 26 17:48:19 2017 +0800 - - Bug 1402681 - Part 1: Do not queue the task without task queue. r=jya, a=sledru - - Since the source buffer is a wrapped native, it would be unlinked twice and then the - TrackBuffersManager::Detach() would also be called twice. - - The first detach task would clear the task queue of TrackBuffersManager, and then we - won't accept any new task without task queue. The second detach task should not be - executed. - - MozReview-Commit-ID: AWTzVbRH5B1 - - --HG-- - extra : source : 145eac8ba70636cdb1a235d6d7094b87bbfd8022 ---- - dom/media/mediasource/TrackBuffersManager.cpp | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git dom/media/mediasource/TrackBuffersManager.cpp dom/media/mediasource/TrackBuffersManager.cpp -index 50293810064b..cda89faaff51 100644 ---- dom/media/mediasource/TrackBuffersManager.cpp -+++ dom/media/mediasource/TrackBuffersManager.cpp -@@ -145,6 +145,15 @@ TrackBuffersManager::DoAppendData(already_AddRefed aData, - void - TrackBuffersManager::QueueTask(SourceBufferTask* aTask) - { -+ // The source buffer is a wrapped native, it would be unlinked twice and so -+ // the TrackBuffersManager::Detach() would also be called twice. Since the -+ // detach task has been done before, we could ignore this task. -+ if (!GetTaskQueue()) { -+ MOZ_ASSERT(aTask->GetType() == SourceBufferTask::Type::Detach, -+ "only detach task could happen here!"); -+ return; -+ } -+ - if (!OnTaskQueue()) { - GetTaskQueue()->Dispatch(NewRunnableMethod>( - "TrackBuffersManager::QueueTask", - -commit 99e2204da6a1 -Author: Alastor Wu -Date: Tue Sep 26 17:48:39 2017 +0800 - - Bug 1402681 - Part 2: Add log. r=jya, a=sledru - - MozReview-Commit-ID: 8qINxSCKrvg - - --HG-- - extra : source : 0cac2e15b4ca7cf03e75ee208da624495215382f ---- - dom/media/mediasource/SourceBufferTask.h | 7 +++++++ - dom/media/mediasource/TrackBuffersManager.cpp | 4 ++++ - 2 files changed, 11 insertions(+) - -diff --git dom/media/mediasource/SourceBufferTask.h dom/media/mediasource/SourceBufferTask.h -index 183e7b4b2a0b..b73094fbd282 100644 ---- dom/media/mediasource/SourceBufferTask.h -+++ dom/media/mediasource/SourceBufferTask.h -@@ -32,6 +32,7 @@ public: - typedef MozPromise RangeRemovalPromise; - - virtual Type GetType() const = 0; -+ virtual const char* GetTypeName() const = 0; - - template - ReturnType* As() -@@ -54,6 +55,7 @@ public: - - static const Type sType = Type::AppendBuffer; - Type GetType() const override { return Type::AppendBuffer; } -+ const char* GetTypeName() const override { return "AppendBuffer"; } - - RefPtr mBuffer; - SourceBufferAttributes mAttributes; -@@ -64,12 +66,14 @@ class AbortTask : public SourceBufferTask { - public: - static const Type sType = Type::Abort; - Type GetType() const override { return Type::Abort; } -+ const char* GetTypeName() const override { return "Abort"; } - }; - - class ResetTask : public SourceBufferTask { - public: - static const Type sType = Type::Reset; - Type GetType() const override { return Type::Reset; } -+ const char* GetTypeName() const override { return "Reset"; } - }; - - class RangeRemovalTask : public SourceBufferTask { -@@ -80,6 +84,7 @@ public: - - static const Type sType = Type::RangeRemoval; - Type GetType() const override { return Type::RangeRemoval; } -+ const char* GetTypeName() const override { return "RangeRemoval"; } - - media::TimeInterval mRange; - MozPromiseHolder mPromise; -@@ -94,6 +99,7 @@ public: - - static const Type sType = Type::EvictData; - Type GetType() const override { return Type::EvictData; } -+ const char* GetTypeName() const override { return "EvictData"; } - - media::TimeUnit mPlaybackTime; - int64_t mSizeToEvict; -@@ -103,6 +109,7 @@ class DetachTask : public SourceBufferTask { - public: - static const Type sType = Type::Detach; - Type GetType() const override { return Type::Detach; } -+ const char* GetTypeName() const override { return "Detach"; } - }; - - } // end mozilla namespace -diff --git dom/media/mediasource/TrackBuffersManager.cpp dom/media/mediasource/TrackBuffersManager.cpp -index cda89faaff51..b9b768b726a2 100644 ---- dom/media/mediasource/TrackBuffersManager.cpp -+++ dom/media/mediasource/TrackBuffersManager.cpp -@@ -151,6 +151,8 @@ TrackBuffersManager::QueueTask(SourceBufferTask* aTask) - if (!GetTaskQueue()) { - MOZ_ASSERT(aTask->GetType() == SourceBufferTask::Type::Detach, - "only detach task could happen here!"); -+ MSE_DEBUG("Could not queue the task '%s' without task queue", -+ aTask->GetTypeName()); - return; - } - -@@ -183,6 +185,8 @@ TrackBuffersManager::ProcessTasks() - // nothing to do. - return; - } -+ -+ MSE_DEBUG("Process task '%s'", task->GetTypeName()); - switch (task->GetType()) { - case Type::AppendBuffer: - mCurrentTask = task; diff --git a/www/waterfox/files/patch-bug1402715 b/www/waterfox/files/patch-bug1402715 deleted file mode 100644 index c8857edb5eee..000000000000 --- a/www/waterfox/files/patch-bug1402715 +++ /dev/null @@ -1,44 +0,0 @@ -commit 6c7fb56e58c5 -Author: Mats Palmgren -Date: Wed Sep 27 14:12:01 2017 +0200 - - Bug 1402715 - Treat URL bar contents as raw text when copying. r=mak - - MozReview-Commit-ID: LuSvwRUVwAq ---- - browser/base/content/test/urlbar/browser_urlbarCopying.js | 5 +++++ - browser/base/content/urlbarBindings.xml | 5 ++++- - 2 files changed, 9 insertions(+), 1 deletion(-) - -diff --git browser/base/content/test/urlbar/browser_urlbarCopying.js browser/base/content/test/urlbar/browser_urlbarCopying.js -index 521dace780f2..9559b06b2ec6 100644 ---- browser/base/content/test/urlbar/browser_urlbarCopying.js -+++ browser/base/content/test/urlbar/browser_urlbarCopying.js -@@ -164,6 +164,11 @@ var tests = [ - copyVal: "\xf7", - copyExpected: "http://example.com/?\xf7" - }, -+ { -+ loadURL: "http://example.com/%20%20%20", -+ expectedURL: "example.com/ ", -+ copyExpected: "http://example.com/%20%20%20" -+ }, - - // data: and javsacript: URIs shouldn't be encoded - { -diff --git browser/base/content/urlbarBindings.xml browser/base/content/urlbarBindings.xml -index 8999ab379cb2..4a86ce38e893 100644 ---- browser/base/content/urlbarBindings.xml -+++ browser/base/content/urlbarBindings.xml -@@ -972,7 +972,10 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/. - // Grab the actual input field's value, not our value, which could include moz-action: - var inputVal = this.inputField.value; - let selection = this.editor.selection; -- var selectedVal = selection.toString(); -+ const flags = Ci.nsIDocumentEncoder.OutputPreformatted | -+ Ci.nsIDocumentEncoder.OutputRaw; -+ let selectedVal = selection.QueryInterface(Ci.nsISelectionPrivate) -+ .toStringWithFormat("text/plain", flags, 0); - - // Handle multiple-range selection as a string for simplicity. - if (selection.rangeCount > 1) { diff --git a/www/waterfox/files/patch-bug1402766 b/www/waterfox/files/patch-bug1402766 deleted file mode 100644 index a339af5d1188..000000000000 --- a/www/waterfox/files/patch-bug1402766 +++ /dev/null @@ -1,69 +0,0 @@ -commit fd42606e30e4 -Author: Boris Zbarsky -Date: Tue Oct 3 18:50:10 2017 -0400 - - Bug 1402766 - Work around layout violating its own invariants and causing stylo code to crash. r=emilio, a=sledru - - MozReview-Commit-ID: 3ggJI0qmOJV - - --HG-- - extra : source : 71d02a129bebc9dfd804b1babb8fae587d1930a8 - extra : histedit_source : d36726bf4182c3820a3f8efd2d2599b114cb55c4 ---- - layout/generic/crashtests/1405443.html | 19 +++++++++++++++++++ - layout/generic/crashtests/crashtests.list | 1 + - layout/generic/nsInlineFrame.cpp | 7 +++++++ - 3 files changed, 27 insertions(+) - -diff --git layout/generic/crashtests/1405443.html layout/generic/crashtests/1405443.html -new file mode 100644 -index 000000000000..79313ae1c4d4 ---- /dev/null -+++ layout/generic/crashtests/1405443.html -@@ -0,0 +1,19 @@ -+ -+ -+ -+
-+A -+ -+ -+ -+
-diff --git layout/generic/crashtests/crashtests.list layout/generic/crashtests/crashtests.list -index 25c2c32470fc..07cc75ea0f9a 100644 ---- layout/generic/crashtests/crashtests.list -+++ layout/generic/crashtests/crashtests.list -@@ -659,3 +659,4 @@ load 1367413-1.html - load 1368617-1.html - load 1373586.html - load 1401420-1.html -+asserts(11) load 1405443.html # bug 1405443 -diff --git layout/generic/nsInlineFrame.cpp layout/generic/nsInlineFrame.cpp -index 089178a6ada2..ce62f822bda0 100644 ---- layout/generic/nsInlineFrame.cpp -+++ layout/generic/nsInlineFrame.cpp -@@ -1065,6 +1065,13 @@ nsInlineFrame::UpdateStyleOfOwnedAnonBoxesForIBSplit( - } - - nsIFrame* nextInline = blockFrame->GetProperty(nsIFrame::IBSplitSibling()); -+ -+ // This check is here due to bug 1405443. Please remove it once -+ // that bug is fixed. -+ if (!nextInline) { -+ break; -+ } -+ - MOZ_ASSERT(nextInline, "There is always a trailing inline in an IB split"); - - for (nsIFrame* cont = nextInline; cont; cont = cont->GetNextContinuation()) { diff --git a/www/waterfox/files/patch-bug1402871 b/www/waterfox/files/patch-bug1402871 deleted file mode 100644 index a0b71c81a4a1..000000000000 --- a/www/waterfox/files/patch-bug1402871 +++ /dev/null @@ -1,28 +0,0 @@ -commit 6f6ee3c5b2ad -Author: Kearwood Gilbert -Date: Wed Oct 11 14:25:51 2017 -0700 - - Bug 1402871 - Change VREventObserver::mWindow to a RefPtr. r=dveditz, a=ritu - - MozReview-Commit-ID: 79MlNMAvIQD - - --HG-- - extra : source : 84ff58454e222ce067ec27f8841ba684934b7666 ---- - dom/vr/VREventObserver.h | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git dom/vr/VREventObserver.h dom/vr/VREventObserver.h -index 24a1065a18fe..cd2cf69469b5 100644 ---- dom/vr/VREventObserver.h -+++ dom/vr/VREventObserver.h -@@ -34,8 +34,7 @@ public: - private: - ~VREventObserver(); - -- // Weak pointer, instance is owned by mWindow. -- nsGlobalWindow* MOZ_NON_OWNING_REF mWindow; -+ RefPtr mWindow; - // For WebVR telemetry for tracking users who view content - // in the 2D view. - TimeStamp mSpendTimeIn2DView; diff --git a/www/waterfox/files/patch-bug1402951 b/www/waterfox/files/patch-bug1402951 deleted file mode 100644 index 7c9a14017c7e..000000000000 --- a/www/waterfox/files/patch-bug1402951 +++ /dev/null @@ -1,164 +0,0 @@ -commit 71daba14a2c4 -Author: Alexander Surkov -Date: Tue Oct 3 10:58:27 2017 -0400 - - Bug 1402951 - No show events for content on document load complete. r=aklotz, r=yzen, a=ritu - - --HG-- - extra : source : ffc4c63976921cbfec03b26ff48541c2f414d2e3 ---- - accessible/generic/DocAccessible.cpp | 14 ++++++++------ - accessible/ipc/DocAccessibleChildBase.cpp | 15 ++++++++++++++- - accessible/ipc/DocAccessibleChildBase.h | 5 +++++ - accessible/ipc/DocAccessibleParent.cpp | 5 +++++ - accessible/ipc/other/PDocAccessible.ipdl | 1 + - accessible/ipc/win/DocAccessibleChild.h | 3 ++- - accessible/ipc/win/PDocAccessible.ipdl | 1 + - accessible/tests/mochitest/treeupdate/test_ariaowns.html | 5 ++--- - 8 files changed, 38 insertions(+), 11 deletions(-) - -diff --git accessible/generic/DocAccessible.cpp accessible/generic/DocAccessible.cpp -index 60b160b21a78..fa6f3c6a70d5 100644 ---- accessible/generic/DocAccessible.cpp -+++ accessible/generic/DocAccessible.cpp -@@ -1536,13 +1536,15 @@ DocAccessible::DoInitialUpdate() - ParentDocument()->FireDelayedEvent(reorderEvent); - } - -- TreeMutation mt(this); -- uint32_t childCount = ChildCount(); -- for (uint32_t i = 0; i < childCount; i++) { -- Accessible* child = GetChildAt(i); -- mt.AfterInsertion(child); -+ if (IPCAccessibilityActive()) { -+ DocAccessibleChild* ipcDoc = IPCDoc(); -+ MOZ_ASSERT(ipcDoc); -+ if (ipcDoc) { -+ for (auto idx = 0U; idx < mChildren.Length(); idx++) { -+ ipcDoc->InsertIntoIpcTree(this, mChildren.ElementAt(idx), idx); -+ } -+ } - } -- mt.Done(); - } - - void -diff --git accessible/ipc/DocAccessibleChildBase.cpp accessible/ipc/DocAccessibleChildBase.cpp -index 6a0ad9b7dbc6..19a858aa6d9b 100644 ---- accessible/ipc/DocAccessibleChildBase.cpp -+++ accessible/ipc/DocAccessibleChildBase.cpp -@@ -80,6 +80,19 @@ DocAccessibleChildBase::SerializeTree(Accessible* aRoot, - } - } - -+void -+DocAccessibleChildBase::InsertIntoIpcTree(Accessible* aParent, -+ Accessible* aChild, -+ uint32_t aIdxInParent) -+{ -+ uint64_t parentID = aParent->IsDoc() ? -+ 0 : reinterpret_cast(aParent->UniqueID()); -+ nsTArray shownTree; -+ ShowEventData data(parentID, aIdxInParent, shownTree, true); -+ SerializeTree(aChild, data.NewTree()); -+ MaybeSendShowEvent(data, false); -+} -+ - void - DocAccessibleChildBase::ShowEvent(AccShowEvent* aShowEvent) - { -@@ -87,7 +100,7 @@ DocAccessibleChildBase::ShowEvent(AccShowEvent* aShowEvent) - uint64_t parentID = parent->IsDoc() ? 0 : reinterpret_cast(parent->UniqueID()); - uint32_t idxInParent = aShowEvent->GetAccessible()->IndexInParent(); - nsTArray shownTree; -- ShowEventData data(parentID, idxInParent, shownTree); -+ ShowEventData data(parentID, idxInParent, shownTree, false); - SerializeTree(aShowEvent->GetAccessible(), data.NewTree()); - MaybeSendShowEvent(data, aShowEvent->IsFromUserInput()); - } -diff --git accessible/ipc/DocAccessibleChildBase.h accessible/ipc/DocAccessibleChildBase.h -index b8a8bfde1d0c..13146e5d44e2 100644 ---- accessible/ipc/DocAccessibleChildBase.h -+++ accessible/ipc/DocAccessibleChildBase.h -@@ -45,6 +45,11 @@ public: - SendShutdown(); - } - -+ /** -+ * Serializes a shown tree and sends it to the chrome process. -+ */ -+ void InsertIntoIpcTree(Accessible* aParent, -+ Accessible* aChild, uint32_t aIdxInParent); - void ShowEvent(AccShowEvent* aShowEvent); - - virtual void ActorDestroy(ActorDestroyReason) override -diff --git accessible/ipc/DocAccessibleParent.cpp accessible/ipc/DocAccessibleParent.cpp -index 4bbf261273c5..34c334847c04 100644 ---- accessible/ipc/DocAccessibleParent.cpp -+++ accessible/ipc/DocAccessibleParent.cpp -@@ -79,6 +79,11 @@ DocAccessibleParent::RecvShowEvent(const ShowEventData& aData, - - MOZ_ASSERT(CheckDocTree()); - -+ // Just update, no events. -+ if (aData.EventSuppressed()) { -+ return IPC_OK(); -+ } -+ - ProxyAccessible* target = parent->ChildAt(newChildIdx); - ProxyShowHideEvent(target, parent, true, aFromUser); - -diff --git accessible/ipc/other/PDocAccessible.ipdl accessible/ipc/other/PDocAccessible.ipdl -index 4c084bbee125..ffed961185fa 100644 ---- accessible/ipc/other/PDocAccessible.ipdl -+++ accessible/ipc/other/PDocAccessible.ipdl -@@ -29,6 +29,7 @@ struct ShowEventData - uint64_t ID; - uint32_t Idx; - AccessibleData[] NewTree; -+ bool EventSuppressed; - }; - - struct Attribute -diff --git accessible/ipc/win/DocAccessibleChild.h accessible/ipc/win/DocAccessibleChild.h -index e34987005a40..9b4586a16cda 100644 ---- accessible/ipc/win/DocAccessibleChild.h -+++ accessible/ipc/win/DocAccessibleChild.h -@@ -110,7 +110,8 @@ private: - SerializedShow(DocAccessibleChild* aTarget, - ShowEventData& aEventData, bool aFromUser) - : DeferredEvent(aTarget) -- , mEventData(aEventData.ID(), aEventData.Idx(), nsTArray()) -+ , mEventData(aEventData.ID(), aEventData.Idx(), -+ nsTArray(), aEventData.EventSuppressed()) - , mFromUser(aFromUser) - { - // Since IPDL doesn't generate a move constructor for ShowEventData, -diff --git accessible/ipc/win/PDocAccessible.ipdl accessible/ipc/win/PDocAccessible.ipdl -index afd3b991efdc..da7128e87a65 100644 ---- accessible/ipc/win/PDocAccessible.ipdl -+++ accessible/ipc/win/PDocAccessible.ipdl -@@ -29,6 +29,7 @@ struct ShowEventData - uint64_t ID; - uint32_t Idx; - AccessibleData[] NewTree; -+ bool EventSuppressed; - }; - - struct Attribute -diff --git accessible/tests/mochitest/treeupdate/test_ariaowns.html accessible/tests/mochitest/treeupdate/test_ariaowns.html -index 7d88b9a0698b..bf47bc84c280 100644 ---- accessible/tests/mochitest/treeupdate/test_ariaowns.html -+++ accessible/tests/mochitest/treeupdate/test_ariaowns.html -@@ -580,9 +580,8 @@ - function test9_prepare() - { - this.eventSeq = [ -- new invokerChecker(EVENT_SHOW, () => { -- let doc = getNode('t9_container').contentDocument; -- return doc && doc.getElementById('container'); -+ new invokerChecker(EVENT_DOCUMENT_LOAD_COMPLETE, () => { -+ return getNode('t9_container').contentDocument; - }) - ]; - diff --git a/www/waterfox/files/patch-bug1402966 b/www/waterfox/files/patch-bug1402966 deleted file mode 100644 index 51123f684a06..000000000000 --- a/www/waterfox/files/patch-bug1402966 +++ /dev/null @@ -1,51 +0,0 @@ -commit 6149574dc0f9 -Author: Gabriele Svelto -Date: Tue Sep 26 09:35:03 2017 +0200 - - Bug 1402966 - Search for libcurl in more paths to support various *BSDs. r=Dexter, a=sledru - - MozReview-Commit-ID: J4ykuSVEa0y - - --HG-- - extra : source : 4741b93cfdf29517ff8eae863825fdc2ab5bd7bd ---- - .../telemetry/pingsender/pingsender_unix_common.cpp | 16 ++++++++++------ - 1 file changed, 10 insertions(+), 6 deletions(-) - -diff --git toolkit/components/telemetry/pingsender/pingsender_unix_common.cpp toolkit/components/telemetry/pingsender/pingsender_unix_common.cpp -index ae20f4114193..7817e93e3d1f 100644 ---- toolkit/components/telemetry/pingsender/pingsender_unix_common.cpp -+++ toolkit/components/telemetry/pingsender/pingsender_unix_common.cpp -@@ -88,10 +88,19 @@ CurlWrapper::Init() - "/usr/lib/i386-linux-gnu", // Debian 32-bit x86 - "/usr/lib/x86_64-linux-gnu", // Debian 64-bit x86 - #endif // XP_LINUX -+#if !defined(XP_MACOSX) && !defined(XP_LINUX) // Various BSDs -+ "/usr/local/lib", // FreeBSD, OpenBSD -+ "/usr/pkg/lib", // NetBSD -+#endif // !defined(XP_MACOSX) && !defined(XP_LINUX) - }; - - const char* libcurlNames[] = { --#ifdef XP_LINUX -+#if defined(XP_MACOSX) -+ // macOS -+ "libcurl.dylib", -+ "libcurl.4.dylib", -+ "libcurl.3.dylib", -+#else // Linux, *BSD, ... - "libcurl.so", - "libcurl.so.4", - // Debian gives libcurl a different name when it is built against GnuTLS -@@ -100,11 +109,6 @@ CurlWrapper::Init() - // Older versions in case we find nothing better - "libcurl.so.3", - "libcurl-gnutls.so.3", // See above for Debian --#elif defined(XP_MACOSX) -- // macOS -- "libcurl.dylib", -- "libcurl.4.dylib", -- "libcurl.3.dylib", - #endif - }; - diff --git a/www/waterfox/files/patch-bug1402981 b/www/waterfox/files/patch-bug1402981 deleted file mode 100644 index 9e177ca672e2..000000000000 --- a/www/waterfox/files/patch-bug1402981 +++ /dev/null @@ -1,172 +0,0 @@ -commit bcef6c71b916 -Author: Gijs Kruitbosch -Date: Wed Sep 27 22:37:19 2017 +0100 - - Bug 1402981 - Add light and dark themes to the list of themes in customize mode by default. r=jaws, a=sledru - - MozReview-Commit-ID: 4GxPEm119Yc - - --HG-- - extra : source : ed2a1dff7a2e544a76de0eb65139f0febd0211e4 ---- - .../components/customizableui/CustomizeMode.jsm | 45 +++++++++++++++------- - .../browser_1007336_lwthemes_in_customize_mode.js | 44 +++++++++++++++------ - 2 files changed, 64 insertions(+), 25 deletions(-) - -diff --git browser/components/customizableui/CustomizeMode.jsm browser/components/customizableui/CustomizeMode.jsm -index fbc8ff27093c..aa80840a3c42 100644 ---- browser/components/customizableui/CustomizeMode.jsm -+++ browser/components/customizableui/CustomizeMode.jsm -@@ -1311,7 +1311,9 @@ CustomizeMode.prototype = { - - onLWThemesMenuShowing(aEvent) { - const DEFAULT_THEME_ID = "{972ce4c6-7e08-4474-a285-3208198ce6fd}"; -- const RECENT_LWT_COUNT = 5; -+ const LIGHT_THEME_ID = "firefox-compact-light@mozilla.org"; -+ const DARK_THEME_ID = "firefox-compact-dark@mozilla.org"; -+ const MAX_THEME_COUNT = 6; - - this._clearLWThemesMenu(aEvent.target); - -@@ -1366,19 +1368,27 @@ CustomizeMode.prototype = { - let themes = [aDefaultTheme]; - let lwts = LightweightThemeManager.usedThemes; - let currentLwt = LightweightThemeManager.currentTheme; -- let currentLwtIndex = lwts.indexOf(currentLwt); -- if (currentLwtIndex > -1) { -- // Make sure that the current lightweight theme -- // is at the beginning of the array to avoid truncation -- // in the next step. -- lwts = lwts.splice(currentLwtIndex, 1).concat(lwts); -- } -- if (lwts.length > RECENT_LWT_COUNT) -- lwts.length = RECENT_LWT_COUNT; -+ // The lwts besides the builtin themes don't have an isActive property: - for (let lwt of lwts) { -- lwt.isActive = !!currentLwt && (lwt.id == currentLwt.id); -- themes.push(lwt); -+ if (!lwt.hasOwnProperty("isActive")) { -+ lwt.isActive = !!currentLwt && (lwt.id == currentLwt.id); -+ } -+ } -+ -+ // Move the current theme (if any) and the light/dark themes to the start: -+ let importantThemes = [LIGHT_THEME_ID, DARK_THEME_ID]; -+ if (currentLwt && !importantThemes.includes(currentLwt.id)) { -+ importantThemes.push(currentLwt.id); -+ } -+ for (let importantTheme of importantThemes) { -+ let themeIndex = lwts.findIndex(theme => theme.id == importantTheme); -+ if (themeIndex > -1) { -+ themes.push(...lwts.splice(themeIndex, 1)); -+ } - } -+ themes = themes.concat(lwts); -+ if (themes.length > MAX_THEME_COUNT) -+ themes.length = MAX_THEME_COUNT; - - let footer = doc.getElementById("customization-lwtheme-menu-footer"); - let panel = footer.parentNode; -@@ -1400,8 +1410,15 @@ CustomizeMode.prototype = { - recommendedThemes = JSON.parse(recommendedThemes); - let sb = Services.strings.createBundle("chrome://browser/locale/lightweightThemes.properties"); - for (let theme of recommendedThemes) { -- theme.name = sb.GetStringFromName("lightweightThemes." + theme.id + ".name"); -- theme.description = sb.GetStringFromName("lightweightThemes." + theme.id + ".description"); -+ try { -+ theme.name = sb.GetStringFromName("lightweightThemes." + theme.id + ".name"); -+ theme.description = sb.GetStringFromName("lightweightThemes." + theme.id + ".description"); -+ } catch (ex) { -+ // If finding strings for this failed, just don't build it. This can -+ // happen for users with 'older' recommended themes lists, some of which -+ // have since been removed from Firefox. -+ continue; -+ } - let button = buildToolbarButton(theme); - button.addEventListener("command", () => { - LightweightThemeManager.setLocalTheme(button.theme); -diff --git browser/components/customizableui/test/browser_1007336_lwthemes_in_customize_mode.js browser/components/customizableui/test/browser_1007336_lwthemes_in_customize_mode.js -index 3cb3ee34c7cf..3ee8f9b8f697 100644 ---- browser/components/customizableui/test/browser_1007336_lwthemes_in_customize_mode.js -+++ browser/components/customizableui/test/browser_1007336_lwthemes_in_customize_mode.js -@@ -5,12 +5,13 @@ - "use strict"; - - const DEFAULT_THEME_ID = "{972ce4c6-7e08-4474-a285-3208198ce6fd}"; -+const LIGHT_THEME_ID = "firefox-compact-light@mozilla.org"; -+const DARK_THEME_ID = "firefox-compact-dark@mozilla.org"; - const {LightweightThemeManager} = Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm", {}); - - add_task(async function() { - Services.prefs.clearUserPref("lightweightThemes.usedThemes"); - Services.prefs.clearUserPref("lightweightThemes.recommendedThemes"); -- LightweightThemeManager.clearBuiltInThemes(); - - await startCustomizing(); - -@@ -35,9 +36,14 @@ add_task(async function() { - let header = document.getElementById("customization-lwtheme-menu-header"); - let recommendedHeader = document.getElementById("customization-lwtheme-menu-recommended"); - -- is(header.nextSibling.nextSibling, recommendedHeader, -- "There should only be one theme (default) in the 'My Themes' section by default"); -- is(header.nextSibling.theme.id, DEFAULT_THEME_ID, "That theme should be the default theme"); -+ is(header.nextSibling.nextSibling.nextSibling.nextSibling, recommendedHeader, -+ "There should only be three themes (default, light, dark) in the 'My Themes' section by default"); -+ is(header.nextSibling.theme.id, DEFAULT_THEME_ID, -+ "The first theme should be the default theme"); -+ is(header.nextSibling.nextSibling.theme.id, LIGHT_THEME_ID, -+ "The second theme should be the light theme"); -+ is(header.nextSibling.nextSibling.nextSibling.theme.id, DARK_THEME_ID, -+ "The third theme should be the dark theme"); - - let firstLWTheme = recommendedHeader.nextSibling; - let firstLWThemeId = firstLWTheme.theme.id; -@@ -52,12 +58,18 @@ add_task(async function() { - await popupShownPromise; - - is(header.nextSibling.theme.id, DEFAULT_THEME_ID, "The first theme should be the Default theme"); -- let installedThemeId = header.nextSibling.nextSibling.theme.id; -+ let installedThemeId = header.nextSibling.nextSibling.nextSibling.nextSibling.theme.id; - ok(installedThemeId.startsWith(firstLWThemeId), - "The second theme in the 'My Themes' section should be the newly installed theme: " + - "Installed theme id: " + installedThemeId + "; First theme ID: " + firstLWThemeId); -- is(header.nextSibling.nextSibling.nextSibling, recommendedHeader, -- "There should be two themes in the 'My Themes' section"); -+ let themeCount = 0; -+ let iterNode = header; -+ while (iterNode.nextSibling && iterNode.nextSibling.theme) { -+ themeCount++; -+ iterNode = iterNode.nextSibling; -+ } -+ is(themeCount, 4, -+ "There should be four themes in the 'My Themes' section"); - - let defaultTheme = header.nextSibling; - defaultTheme.doCommand(); -@@ -90,11 +102,21 @@ add_task(async function() { - await popupShownPromise; - header = document.getElementById("customization-lwtheme-menu-header"); - is(header.hidden, false, "Header should never be hidden"); -- is(header.nextSibling.theme.id, DEFAULT_THEME_ID, "The first theme should be the Default theme"); -- is(header.nextSibling.hidden, false, "The default theme should never be hidden"); -+ let themeNode = header.nextSibling; -+ is(themeNode.theme.id, DEFAULT_THEME_ID, "The first theme should be the Default theme"); -+ is(themeNode.hidden, false, "The default theme should never be hidden"); -+ -+ themeNode = themeNode.nextSibling; -+ is(themeNode.theme.id, LIGHT_THEME_ID, "The second theme should be the Light theme"); -+ is(themeNode.hidden, false, "The light theme should never be hidden"); -+ -+ themeNode = themeNode.nextSibling; -+ is(themeNode.theme.id, DARK_THEME_ID, "The third theme should be the Dark theme"); -+ is(themeNode.hidden, false, "The dark theme should never be hidden"); -+ - recommendedHeader = document.getElementById("customization-lwtheme-menu-recommended"); -- is(header.nextSibling.nextSibling, recommendedHeader, -- "There should only be one theme (default) in the 'My Themes' section by default"); -+ is(themeNode.nextSibling, recommendedHeader, -+ "There should only be three themes (default, light, dark) in the 'My Themes' section now"); - let footer = document.getElementById("customization-lwtheme-menu-footer"); - is(recommendedHeader.nextSibling.id, footer.id, "There should be no recommended themes in the menu"); - is(recommendedHeader.hidden, true, "The recommendedHeader should be hidden since there are no recommended themes"); diff --git a/www/waterfox/files/patch-bug1403282 b/www/waterfox/files/patch-bug1403282 deleted file mode 100644 index baab3804b1bb..000000000000 --- a/www/waterfox/files/patch-bug1403282 +++ /dev/null @@ -1,180 +0,0 @@ -commit fc20d87173c4 -Author: Manish Goregaokar -Date: Tue Sep 26 23:56:15 2017 -0500 - - Bug 1403282 - stylo: Don't error out on trailing whitespace in attr(). r=bz, a=sledru - - Source-Repo: https://github.com/servo/servo - Source-Revision: 97227aaca3613e22afc832554d29f7f7fdfb7220 - - --HG-- - extra : source : 4263e1c081c940b4eae7bcd388274ec8c5b5dd8b ---- - servo/components/style/values/specified/mod.rs | 44 ++++++++++++++------------ - 1 file changed, 24 insertions(+), 20 deletions(-) - -diff --git servo/components/style/values/specified/mod.rs servo/components/style/values/specified/mod.rs -index 856aecca90ac..72ed1b1de83a 100644 ---- servo/components/style/values/specified/mod.rs -+++ servo/components/style/values/specified/mod.rs -@@ -739,28 +739,32 @@ impl Attr { - let first = input.try(|i| i.expect_ident_cloned()).ok(); - if let Ok(token) = input.try(|i| i.next_including_whitespace().map(|t| t.clone())) { - match token { -- Token::Delim('|') => {} -+ Token::Delim('|') => { -+ // must be followed by an ident -+ let second_token = match *input.next_including_whitespace()? { -+ Token::Ident(ref second) => second, -+ ref t => return Err(BasicParseError::UnexpectedToken(t.clone()).into()), -+ }; -+ -+ let ns_with_id = if let Some(ns) = first { -+ let ns = Namespace::from(ns.as_ref()); -+ let id: Result<_, ParseError> = -+ get_id_for_namespace(&ns, context) -+ .map_err(|()| StyleParseError::UnspecifiedError.into()); -+ Some((ns, id?)) -+ } else { -+ None -+ }; -+ return Ok(Attr { -+ namespace: ns_with_id, -+ attribute: second_token.as_ref().to_owned(), -+ }) -+ } -+ // In the case of attr(foobar ) we don't want to error out -+ // because of the trailing whitespace -+ Token::WhiteSpace(_) => (), - ref t => return Err(BasicParseError::UnexpectedToken(t.clone()).into()), - } -- // must be followed by an ident -- let second_token = match *input.next_including_whitespace()? { -- Token::Ident(ref second) => second, -- ref t => return Err(BasicParseError::UnexpectedToken(t.clone()).into()), -- }; -- -- let ns_with_id = if let Some(ns) = first { -- let ns = Namespace::from(ns.as_ref()); -- let id: Result<_, ParseError> = -- get_id_for_namespace(&ns, context) -- .map_err(|()| StyleParseError::UnspecifiedError.into()); -- Some((ns, id?)) -- } else { -- None -- }; -- return Ok(Attr { -- namespace: ns_with_id, -- attribute: second_token.as_ref().to_owned(), -- }) - } - - if let Some(first) = first { - -commit 20bbda2d12de -Author: Manish Goregaokar -Date: Tue Sep 26 13:54:22 2017 -0700 - - Bug 1403282 - stylo: Add reftests for whitespace in attr(). r=bz, a=sledru - - MozReview-Commit-ID: IMXFY7bpKGf - - --HG-- - extra : source : cfcb518088438415e5c6f7776dc268abd0b86119 ---- - .../generated-content/attr-whitespace-ref.html | 10 ++++ - .../generated-content/attr-whitespace.xhtml | 60 ++++++++++++++++++++++ - layout/reftests/generated-content/reftest.list | 1 + - 3 files changed, 71 insertions(+) - -diff --git layout/reftests/generated-content/attr-whitespace-ref.html layout/reftests/generated-content/attr-whitespace-ref.html -new file mode 100644 -index 000000000000..54a74fe4d81f ---- /dev/null -+++ layout/reftests/generated-content/attr-whitespace-ref.html -@@ -0,0 +1,10 @@ -+ -+ -+ -+
HelloWorld
-+
HelloWorld
-+
HelloWorld
-+
Hello
-+
Hello
-+ -+ -diff --git layout/reftests/generated-content/attr-whitespace.xhtml layout/reftests/generated-content/attr-whitespace.xhtml -new file mode 100644 -index 000000000000..e9b6554849b0 ---- /dev/null -+++ layout/reftests/generated-content/attr-whitespace.xhtml -@@ -0,0 +1,60 @@ -+ -+ -+ -+ -+ Whitespace in attributes -+ -+ -+ -+ -+ -+ -+
Hello
-+
Hello
-+
Hello
-+
Hello
-+
Hello
-+ -+ -diff --git layout/reftests/generated-content/reftest.list layout/reftests/generated-content/reftest.list -index e07a0dd565a5..c789f1845421 100644 ---- layout/reftests/generated-content/reftest.list -+++ layout/reftests/generated-content/reftest.list -@@ -19,3 +19,4 @@ fuzzy-if(OSX==1010,1,10) == table-parts-01.html table-parts-01-ref.html - == before-style-sharing.html before-style-sharing-ref.html - == transitive-style-invalidation.html transitive-style-invalidation-ref.html - == dynamic-content.html dynamic-content-ref.html -+== attr-whitespace.xhtml attr-whitespace-ref.html diff --git a/www/waterfox/files/patch-bug1403349 b/www/waterfox/files/patch-bug1403349 deleted file mode 100644 index bdeb5aa56580..000000000000 --- a/www/waterfox/files/patch-bug1403349 +++ /dev/null @@ -1,1216 +0,0 @@ -commit bec0ae08b1a9 -Author: Luca Greco -Date: Wed Sep 27 14:24:54 2017 +0200 - - Bug 1403349 - Fix wrong sourceTabId on webNavigation.onCreatedTarget event. r=aswan, a=ritu - - This changes fixes the regression introduced by Bug 1355120 and adds a new - test case which contains a browserAction popup which open and immediately - close a new window and ensure that the received onCreatedNavigationTarget - is the expected one. - - MozReview-Commit-ID: JIcVCpBTpxj - - --HG-- - extra : source : 435db72f9b6ab5ec9144bbf92611c5c877342410 - extra : histedit_source : 99ba482dfa4bacfbd3b96d4044fdab536c1955e5 ---- - ...gation_onCreatedNavigationTarget_window_open.js | 76 ++++++++++++++++++++-- - toolkit/modules/addons/WebNavigation.jsm | 23 ++++--- - toolkit/modules/addons/WebNavigationContent.js | 16 ++++- - 3 files changed, 99 insertions(+), 16 deletions(-) - -diff --git browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js -index 1dd79b4256f7..993d7c50ff43 100644 ---- browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js -+++ browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js -@@ -58,7 +58,7 @@ async function runTestCase({extension, openNavTarget, expectedWebNavProps}) { - is(completedNavMsg.url, url, "Got the expected webNavigation.onCompleted url property"); - } - --add_task(async function test_on_created_navigation_target_from_window_open() { -+add_task(async function test_window_open() { - const tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser, SOURCE_PAGE); - - gBrowser.selectedTab = tab1; -@@ -74,7 +74,7 @@ add_task(async function test_on_created_navigation_target_from_window_open() { - - const expectedSourceTab = await extension.awaitMessage("expectedSourceTab"); - -- info("open an url in a new tab from a window.open call"); -+ info("open a url in a new tab from a window.open call"); - - await runTestCase({ - extension, -@@ -91,7 +91,7 @@ add_task(async function test_on_created_navigation_target_from_window_open() { - }, - }); - -- info("open an url in a new window from a window.open call"); -+ info("open a url in a new window from a window.open call"); - - await runTestCase({ - extension, -@@ -113,7 +113,7 @@ add_task(async function test_on_created_navigation_target_from_window_open() { - await extension.unload(); - }); - --add_task(async function test_on_created_navigation_target_from_window_open_subframe() { -+add_task(async function test_window_open_from_subframe() { - const tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser, SOURCE_PAGE); - - gBrowser.selectedTab = tab1; -@@ -129,7 +129,7 @@ add_task(async function test_on_created_navigation_target_from_window_open_subfr - - const expectedSourceTab = await extension.awaitMessage("expectedSourceTab"); - -- info("open an url in a new tab from subframe window.open call"); -+ info("open a url in a new tab from subframe window.open call"); - - await runTestCase({ - extension, -@@ -146,7 +146,7 @@ add_task(async function test_on_created_navigation_target_from_window_open_subfr - }, - }); - -- info("open an url in a new window from subframe window.open call"); -+ info("open a url in a new window from subframe window.open call"); - - await runTestCase({ - extension, -@@ -167,3 +167,67 @@ add_task(async function test_on_created_navigation_target_from_window_open_subfr - - await extension.unload(); - }); -+ -+add_task(async function test_window_open_close_from_browserAction_popup() { -+ const tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser, SOURCE_PAGE); -+ -+ gBrowser.selectedTab = tab1; -+ -+ function popup() { -+ window.open("", "_self").close(); -+ -+ browser.test.sendMessage("browserAction_popup_executed"); -+ } -+ -+ const extension = ExtensionTestUtils.loadExtension({ -+ background, -+ manifest: { -+ browser_action: { -+ default_popup: "popup.html", -+ }, -+ permissions: ["webNavigation", "tabs", ""], -+ }, -+ files: { -+ "popup.html": ` -+ -+ -+ -+ -+ -+ -+ -+ -+ `, -+ "popup.js": popup, -+ }, -+ }); -+ -+ await extension.startup(); -+ -+ const expectedSourceTab = await extension.awaitMessage("expectedSourceTab"); -+ -+ clickBrowserAction(extension); -+ -+ await extension.awaitMessage("browserAction_popup_executed"); -+ -+ info("open a url in a new tab from a window.open call"); -+ -+ await runTestCase({ -+ extension, -+ openNavTarget() { -+ extension.sendMessage({ -+ type: "execute-contentscript", -+ code: `window.open("${OPENED_PAGE}#new-tab-from-window-open"); true;`, -+ }); -+ }, -+ expectedWebNavProps: { -+ sourceTabId: expectedSourceTab.sourceTabId, -+ sourceFrameId: 0, -+ url: `${OPENED_PAGE}#new-tab-from-window-open`, -+ }, -+ }); -+ -+ await BrowserTestUtils.removeTab(tab1); -+ -+ await extension.unload(); -+}); -diff --git toolkit/modules/addons/WebNavigation.jsm toolkit/modules/addons/WebNavigation.jsm -index 1aadbd579e05..a0c774665d17 100644 ---- toolkit/modules/addons/WebNavigation.jsm -+++ toolkit/modules/addons/WebNavigation.jsm -@@ -306,19 +306,26 @@ var Manager = { - }, - - onCreatedNavigationTarget(browser, data) { -- const {isSourceTab, createdWindowId, sourceFrameId, url} = data; -- -- // We are going to potentially received two message manager messages for a single -- // onCreatedNavigationTarget event that is happening in the child process, -- // we are going to use the generate uuid to pair them together. -- const pairedMessage = this.createdNavigationTargetByOuterWindowId.get(createdWindowId); -+ const { -+ createdOuterWindowId, -+ isSourceTab, -+ sourceFrameId, -+ url, -+ } = data; -+ -+ // We are going to receive two message manager messages for a single -+ // onCreatedNavigationTarget event related to a window.open that is happening -+ // in the child process (one from the source tab and one from the created tab), -+ // the unique createdWindowId (the outerWindowID of the created docShell) -+ // to pair them together. -+ const pairedMessage = this.createdNavigationTargetByOuterWindowId.get(createdOuterWindowId); - - if (!pairedMessage) { -- this.createdNavigationTargetByOuterWindowId.set(createdWindowId, {browser, data}); -+ this.createdNavigationTargetByOuterWindowId.set(createdOuterWindowId, {browser, data}); - return; - } - -- this.createdNavigationTargetByOuterWindowId.delete(createdWindowId); -+ this.createdNavigationTargetByOuterWindowId.delete(createdOuterWindowId); - - let sourceTabBrowser; - let createdTabBrowser; -diff --git toolkit/modules/addons/WebNavigationContent.js toolkit/modules/addons/WebNavigationContent.js -index 31a8b7328fc9..ed873cc98644 100644 ---- toolkit/modules/addons/WebNavigationContent.js -+++ toolkit/modules/addons/WebNavigationContent.js -@@ -10,6 +10,17 @@ Components.utils.import("resource://gre/modules/Services.jsm"); - XPCOMUtils.defineLazyModuleGetter(this, "WebNavigationFrames", - "resource://gre/modules/WebNavigationFrames.jsm"); - -+function getDocShellOuterWindowId(docShell) { -+ if (!docShell) { -+ return undefined; -+ } -+ -+ return docShell.QueryInterface(Ci.nsIInterfaceRequestor) -+ .getInterface(Ci.nsIDOMWindow) -+ .getInterface(Ci.nsIDOMWindowUtils) -+ .outerWindowID; -+} -+ - function loadListener(event) { - let document = event.target; - let window = document.defaultView; -@@ -56,8 +67,9 @@ var CreatedNavigationTargetListener = { - } - - const isSourceTab = docShell === sourceDocShell || isSourceTabDescendant; -+ - const sourceFrameId = WebNavigationFrames.getDocShellFrameId(sourceDocShell); -- const createdWindowId = WebNavigationFrames.getDocShellFrameId(createdDocShell); -+ const createdOuterWindowId = getDocShellOuterWindowId(sourceDocShell); - - let url; - if (props.hasKey("url")) { -@@ -67,7 +79,7 @@ var CreatedNavigationTargetListener = { - sendAsyncMessage("Extension:CreatedNavigationTarget", { - url, - sourceFrameId, -- createdWindowId, -+ createdOuterWindowId, - isSourceTab, - }); - }, - -commit 27a18112bd4c -Author: Luca Greco -Date: Wed Sep 27 19:07:41 2017 +0200 - - Bug 1403349 - Prevent WebNavigation jsm to leak the sourceTab browser on unpaired CreatedNavigationTarget messages. r=aswan, a=ritu - - This applies the following changes: - - - store a weak reference to the browser element in the WebNavigation.jsm Manager's map - of pending CreatedNavigationTarget messages - - - when a CreatedNavigationTarget message is received from a sourceTab - for a created window that is not currently tracked in the map - (e.g. it has been immediately closed), the message received from the sourceTab - is not saved in the map of the pending CreatedNavigationTarget (and a message - is logged in the console to make easier to investigate issues related to discarded - CreatedNavigationTarget events). - - - adds an additional assertion to the related test case to ensure that no CreatedNavigationTarget - message is still pending in the WebNavigation/jsm's Manager. - - MozReview-Commit-ID: FijQ8IqiY8L - - --HG-- - extra : source : 6692df0c568732b5f38bc594e7e020b3ea2e0f41 - extra : histedit_source : cd9bd61c19bf32bdd24f0faed101a0da9faf5ed4 ---- - ...gation_onCreatedNavigationTarget_window_open.js | 16 +++++++ - toolkit/modules/addons/WebNavigation.jsm | 50 ++++++++++++++++++---- - 2 files changed, 57 insertions(+), 9 deletions(-) - -diff --git browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js -index 993d7c50ff43..1fbb3c07d4a9 100644 ---- browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js -+++ browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js -@@ -58,6 +58,16 @@ async function runTestCase({extension, openNavTarget, expectedWebNavProps}) { - is(completedNavMsg.url, url, "Got the expected webNavigation.onCompleted url property"); - } - -+// Test that there are no pending createdNavigationTarget messages still tracked -+// in WebNavigation.jsm (to be called before the extension is unloaded, because -+// once the last extension which have subscribed a webNavigation event is unloaded -+// all the pending created navigation target data is completely cleared). -+function assertNoPendingCreatedNavigationTargetData() { -+ const {Manager} = Cu.import("resource://gre/modules/WebNavigation.jsm", {}); -+ Assert.equal(Manager.createdNavigationTargetByOuterWindowId.size, 0, -+ "There should be no pending createdNavigationTarget messages in WebNavigation"); -+} -+ - add_task(async function test_window_open() { - const tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser, SOURCE_PAGE); - -@@ -108,6 +118,8 @@ add_task(async function test_window_open() { - }, - }); - -+ assertNoPendingCreatedNavigationTargetData(); -+ - await BrowserTestUtils.removeTab(tab1); - - await extension.unload(); -@@ -163,6 +175,8 @@ add_task(async function test_window_open_from_subframe() { - }, - }); - -+ assertNoPendingCreatedNavigationTargetData(); -+ - await BrowserTestUtils.removeTab(tab1); - - await extension.unload(); -@@ -227,6 +241,8 @@ add_task(async function test_window_open_close_from_browserAction_popup() { - }, - }); - -+ assertNoPendingCreatedNavigationTargetData(); -+ - await BrowserTestUtils.removeTab(tab1); - - await extension.unload(); -diff --git toolkit/modules/addons/WebNavigation.jsm toolkit/modules/addons/WebNavigation.jsm -index a0c774665d17..db6efdb443de 100644 ---- toolkit/modules/addons/WebNavigation.jsm -+++ toolkit/modules/addons/WebNavigation.jsm -@@ -320,22 +320,54 @@ var Manager = { - // to pair them together. - const pairedMessage = this.createdNavigationTargetByOuterWindowId.get(createdOuterWindowId); - -+ if (!isSourceTab) { -+ if (pairedMessage) { -+ // This should not happen, print a warning before overwriting the unexpected pending data. -+ Services.console.logStringMessage( -+ `Discarding onCreatedNavigationTarget for ${createdOuterWindowId}: ` + -+ "unexpected pending data while receiving the created tab data" -+ ); -+ } -+ -+ // Store a weak reference to the browser XUL element, so that we don't prevent -+ // it to be garbage collected if it has been destroyed. -+ const browserWeakRef = Cu.getWeakReference(browser); -+ -+ this.createdNavigationTargetByOuterWindowId.set(createdOuterWindowId, { -+ browserWeakRef, -+ data, -+ }); -+ -+ return; -+ } -+ - if (!pairedMessage) { -- this.createdNavigationTargetByOuterWindowId.set(createdOuterWindowId, {browser, data}); -+ // The sourceTab should always be received after the message coming from the created -+ // top level frame because the "webNavigation-createdNavigationTarget-from-js" observers -+ // subscribed by WebNavigationContent.js are going to be executed in reverse order -+ // (See http://searchfox.org/mozilla-central/rev/f54c1723be/xpcom/ds/nsObserverList.cpp#76) -+ // and the observer subscribed to the created target will be the last one subscribed -+ // to the ObserverService (and the first one to be triggered). -+ Services.console.logStringMessage( -+ `Discarding onCreatedNavigationTarget for ${createdOuterWindowId}: ` + -+ "received source tab data without any created tab data available" -+ ); -+ - return; - } - - this.createdNavigationTargetByOuterWindowId.delete(createdOuterWindowId); - -- let sourceTabBrowser; -- let createdTabBrowser; -+ let sourceTabBrowser = browser; -+ let createdTabBrowser = pairedMessage.browserWeakRef.get(); - -- if (isSourceTab) { -- sourceTabBrowser = browser; -- createdTabBrowser = pairedMessage.browser; -- } else { -- sourceTabBrowser = pairedMessage.browser; -- createdTabBrowser = browser; -+ if (!createdTabBrowser) { -+ Services.console.logStringMessage( -+ `Discarding onCreatedNavigationTarget for ${createdOuterWindowId}: ` + -+ "the created tab has been already destroyed" -+ ); -+ -+ return; - } - - this.fire("onCreatedNavigationTarget", createdTabBrowser, {}, { - -commit 9f0305064bbe -Author: Luca Greco -Date: Thu Sep 28 22:04:14 2017 +0200 - - Bug 1403349 - Add a new webNavigation test for window.open called with a named window target. r=aswan, a=ritu - - MozReview-Commit-ID: Aj8uMtcGwJx - - --HG-- - extra : source : acc39e04d4f0559b796916d5f54a36673708766a - extra : histedit_source : 2366c25a25acf76333f6b9386886ca5c866dad54 ---- - ...gation_onCreatedNavigationTarget_window_open.js | 57 ++++++++++++++++++++++ - 1 file changed, 57 insertions(+) - -diff --git browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js -index 1fbb3c07d4a9..232b9321fcd3 100644 ---- browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js -+++ browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js -@@ -247,3 +247,60 @@ add_task(async function test_window_open_close_from_browserAction_popup() { - - await extension.unload(); - }); -+ -+add_task(async function test_window_open_in_named_win() { -+ const tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser, SOURCE_PAGE); -+ -+ gBrowser.selectedTab = tab1; -+ -+ const extension = ExtensionTestUtils.loadExtension({ -+ background, -+ manifest: { -+ permissions: ["webNavigation", "tabs", ""], -+ }, -+ }); -+ -+ await extension.startup(); -+ -+ const expectedSourceTab = await extension.awaitMessage("expectedSourceTab"); -+ -+ info("open a url in a new named window from a window.open call"); -+ -+ await runTestCase({ -+ extension, -+ openNavTarget() { -+ extension.sendMessage({ -+ type: "execute-contentscript", -+ code: `window.open("${OPENED_PAGE}#new-named-window-open", "TestWinName"); true;`, -+ }); -+ }, -+ expectedWebNavProps: { -+ sourceTabId: expectedSourceTab.sourceTabId, -+ sourceFrameId: 0, -+ url: `${OPENED_PAGE}#new-named-window-open`, -+ }, -+ }); -+ -+ info("open a url in an existent named window from a window.open call"); -+ -+ await runTestCase({ -+ extension, -+ openNavTarget() { -+ extension.sendMessage({ -+ type: "execute-contentscript", -+ code: `window.open("${OPENED_PAGE}#existent-named-window-open", "TestWinName"); true;`, -+ }); -+ }, -+ expectedWebNavProps: { -+ sourceTabId: expectedSourceTab.sourceTabId, -+ sourceFrameId: 0, -+ url: `${OPENED_PAGE}#existent-named-window-open`, -+ }, -+ }); -+ -+ assertNoPendingCreatedNavigationTargetData(); -+ -+ await BrowserTestUtils.removeTab(tab1); -+ -+ await extension.unload(); -+}); - -commit 2a05645d21a8 -Author: Luca Greco -Date: Fri Oct 13 18:19:47 2017 +0200 - - Bug 1403349 - Split webNavigation onCreatedNavigationTarget tests to prevent timeouts on linux32 debug. r=aswan, a=ritu - - MozReview-Commit-ID: 50JLocTVvfu - - --HG-- - rename : browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js => browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_named_window.js - rename : browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js => browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_subframe_window_open.js - extra : source : e802283bbf21d14d431901dd286681cd1933bb97 - extra : histedit_source : dfedfb9746b98e9ee96e768a53aa0f6cbdc8b6ee ---- - .../extensions/test/browser/browser-common.ini | 3 + - ..._ext_webNavigation_onCreatedNavigationTarget.js | 36 +---- - ...gation_onCreatedNavigationTarget_contextmenu.js | 47 ++---- - ...ation_onCreatedNavigationTarget_named_window.js | 97 ++++++++++++ - ...CreatedNavigationTarget_subframe_window_open.js | 163 +++++++++++++++++++++ - ...gation_onCreatedNavigationTarget_window_open.js | 153 +------------------ - .../extensions/test/browser/head_webNavigation.js | 39 +++++ - 7 files changed, 329 insertions(+), 209 deletions(-) - -diff --git browser/components/extensions/test/browser/browser-common.ini browser/components/extensions/test/browser/browser-common.ini -index a03cb9147a7f..3a672f737a59 100644 ---- browser/components/extensions/test/browser/browser-common.ini -+++ browser/components/extensions/test/browser/browser-common.ini -@@ -3,6 +3,7 @@ support-files = - head.js - head_pageAction.js - head_sessions.js -+ head_webNavigation.js - profilerSymbols.sjs - context.html - context_frame.html -@@ -171,6 +172,8 @@ skip-if = true # Bug 1398514 - [browser_ext_webNavigation_getFrames.js] - [browser_ext_webNavigation_onCreatedNavigationTarget.js] - [browser_ext_webNavigation_onCreatedNavigationTarget_contextmenu.js] -+[browser_ext_webNavigation_onCreatedNavigationTarget_named_window.js] -+[browser_ext_webNavigation_onCreatedNavigationTarget_subframe_window_open.js] - [browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js] - [browser_ext_webNavigation_urlbar_transitions.js] - [browser_ext_windows.js] -diff --git browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget.js browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget.js -index 2c17f9e711f8..47d8b0a8c65a 100644 ---- browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget.js -+++ browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget.js -@@ -2,9 +2,8 @@ - /* vim: set sts=2 sw=2 et tw=80: */ - "use strict"; - --const BASE_URL = "http://mochi.test:8888/browser/browser/components/extensions/test/browser"; --const SOURCE_PAGE = `${BASE_URL}/webNav_createdTargetSource.html`; --const OPENED_PAGE = `${BASE_URL}/webNav_createdTarget.html`; -+Services.scriptloader.loadSubScript(new URL("head_webNavigation.js", gTestPath).href, -+ this); - - async function background() { - const tabs = await browser.tabs.query({active: true, currentWindow: true}); -@@ -34,24 +33,6 @@ async function background() { - }); - } - --async function runTestCase({extension, openNavTarget, expectedWebNavProps}) { -- await openNavTarget(); -- -- const webNavMsg = await extension.awaitMessage("webNavOnCreated"); -- const createdTabId = await extension.awaitMessage("tabsOnCreated"); -- const completedNavMsg = await extension.awaitMessage("webNavOnCompleted"); -- -- let {sourceTabId, sourceFrameId, url} = expectedWebNavProps; -- -- is(webNavMsg.tabId, createdTabId, "Got the expected tabId property"); -- is(webNavMsg.sourceTabId, sourceTabId, "Got the expected sourceTabId property"); -- is(webNavMsg.sourceFrameId, sourceFrameId, "Got the expected sourceFrameId property"); -- is(webNavMsg.url, url, "Got the expected url property"); -- -- is(completedNavMsg.tabId, createdTabId, "Got the expected webNavigation.onCompleted tabId property"); -- is(completedNavMsg.url, url, "Got the expected webNavigation.onCompleted url property"); --} -- - add_task(async function test_on_created_navigation_target_from_mouse_click() { - const tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, SOURCE_PAGE); - -@@ -68,7 +49,7 @@ add_task(async function test_on_created_navigation_target_from_mouse_click() { - - info("Open link in a new tab using Ctrl-click"); - -- await runTestCase({ -+ await runCreatedNavigationTargetTest({ - extension, - openNavTarget() { - BrowserTestUtils.synthesizeMouseAtCenter("#test-create-new-tab-from-mouse-click", -@@ -84,7 +65,7 @@ add_task(async function test_on_created_navigation_target_from_mouse_click() { - - info("Open link in a new window using Shift-click"); - -- await runTestCase({ -+ await runCreatedNavigationTargetTest({ - extension, - openNavTarget() { - BrowserTestUtils.synthesizeMouseAtCenter("#test-create-new-window-from-mouse-click", -@@ -100,7 +81,7 @@ add_task(async function test_on_created_navigation_target_from_mouse_click() { - - info("Open link with target=\"_blank\" in a new tab using click"); - -- await runTestCase({ -+ await runCreatedNavigationTargetTest({ - extension, - openNavTarget() { - BrowserTestUtils.synthesizeMouseAtCenter("#test-create-new-tab-from-targetblank-click", -@@ -135,7 +116,7 @@ add_task(async function test_on_created_navigation_target_from_mouse_click_subfr - - info("Open a subframe link in a new tab using Ctrl-click"); - -- await runTestCase({ -+ await runCreatedNavigationTargetTest({ - extension, - openNavTarget() { - BrowserTestUtils.synthesizeMouseAtCenter(function() { -@@ -154,7 +135,7 @@ add_task(async function test_on_created_navigation_target_from_mouse_click_subfr - - info("Open a subframe link in a new window using Shift-click"); - -- await runTestCase({ -+ await runCreatedNavigationTargetTest({ - extension, - openNavTarget() { - BrowserTestUtils.synthesizeMouseAtCenter(function() { -@@ -173,7 +154,7 @@ add_task(async function test_on_created_navigation_target_from_mouse_click_subfr - - info("Open a subframe link with target=\"_blank\" in a new tab using click"); - -- await runTestCase({ -+ await runCreatedNavigationTargetTest({ - extension, - openNavTarget() { - BrowserTestUtils.synthesizeMouseAtCenter(function() { -@@ -194,4 +175,3 @@ add_task(async function test_on_created_navigation_target_from_mouse_click_subfr - - await extension.unload(); - }); -- -diff --git browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_contextmenu.js browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_contextmenu.js -index 670dad87f1e4..e29fccf57a5b 100644 ---- browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_contextmenu.js -+++ browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_contextmenu.js -@@ -2,9 +2,16 @@ - /* vim: set sts=2 sw=2 et tw=80: */ - "use strict"; - --const BASE_URL = "http://mochi.test:8888/browser/browser/components/extensions/test/browser"; --const SOURCE_PAGE = `${BASE_URL}/webNav_createdTargetSource.html`; --const OPENED_PAGE = `${BASE_URL}/webNav_createdTarget.html`; -+Services.scriptloader.loadSubScript(new URL("head_webNavigation.js", gTestPath).href, -+ this); -+ -+async function clickContextMenuItem({pageElementSelector, contextMenuItemLabel}) { -+ const contentAreaContextMenu = await openContextMenu(pageElementSelector); -+ const item = contentAreaContextMenu.getElementsByAttribute("label", contextMenuItemLabel); -+ is(item.length, 1, `found contextMenu item for "${contextMenuItemLabel}"`); -+ item[0].click(); -+ await closeContextMenu(); -+} - - async function background() { - const tabs = await browser.tabs.query({active: true, currentWindow: true}); -@@ -34,32 +41,6 @@ async function background() { - }); - } - --async function runTestCase({extension, openNavTarget, expectedWebNavProps}) { -- await openNavTarget(); -- -- const webNavMsg = await extension.awaitMessage("webNavOnCreated"); -- const createdTabId = await extension.awaitMessage("tabsOnCreated"); -- const completedNavMsg = await extension.awaitMessage("webNavOnCompleted"); -- -- let {sourceTabId, sourceFrameId, url} = expectedWebNavProps; -- -- is(webNavMsg.tabId, createdTabId, "Got the expected tabId property"); -- is(webNavMsg.sourceTabId, sourceTabId, "Got the expected sourceTabId property"); -- is(webNavMsg.sourceFrameId, sourceFrameId, "Got the expected sourceFrameId property"); -- is(webNavMsg.url, url, "Got the expected url property"); -- -- is(completedNavMsg.tabId, createdTabId, "Got the expected webNavigation.onCompleted tabId property"); -- is(completedNavMsg.url, url, "Got the expected webNavigation.onCompleted url property"); --} -- --async function clickContextMenuItem({pageElementSelector, contextMenuItemLabel}) { -- const contentAreaContextMenu = await openContextMenu(pageElementSelector); -- const item = contentAreaContextMenu.getElementsByAttribute("label", contextMenuItemLabel); -- is(item.length, 1, `found contextMenu item for "${contextMenuItemLabel}"`); -- item[0].click(); -- await closeContextMenu(); --} -- - add_task(async function test_on_created_navigation_target_from_context_menu() { - const tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, SOURCE_PAGE); - -@@ -76,7 +57,7 @@ add_task(async function test_on_created_navigation_target_from_context_menu() { - - info("Open link in a new tab from the context menu"); - -- await runTestCase({ -+ await runCreatedNavigationTargetTest({ - extension, - async openNavTarget() { - await clickContextMenuItem({ -@@ -93,7 +74,7 @@ add_task(async function test_on_created_navigation_target_from_context_menu() { - - info("Open link in a new window from the context menu"); - -- await runTestCase({ -+ await runCreatedNavigationTargetTest({ - extension, - async openNavTarget() { - await clickContextMenuItem({ -@@ -129,7 +110,7 @@ add_task(async function test_on_created_navigation_target_from_context_menu_subf - - info("Open a subframe link in a new tab from the context menu"); - -- await runTestCase({ -+ await runCreatedNavigationTargetTest({ - extension, - async openNavTarget() { - await clickContextMenuItem({ -@@ -151,7 +132,7 @@ add_task(async function test_on_created_navigation_target_from_context_menu_subf - - info("Open a subframe link in a new window from the context menu"); - -- await runTestCase({ -+ await runCreatedNavigationTargetTest({ - extension, - async openNavTarget() { - await clickContextMenuItem({ -diff --git browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_named_window.js browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_named_window.js -new file mode 100644 -index 000000000000..9888bfb23da6 ---- /dev/null -+++ browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_named_window.js -@@ -0,0 +1,97 @@ -+/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ -+/* vim: set sts=2 sw=2 et tw=80: */ -+"use strict"; -+ -+Services.scriptloader.loadSubScript(new URL("head_webNavigation.js", gTestPath).href, -+ this); -+ -+async function background() { -+ const tabs = await browser.tabs.query({active: true, currentWindow: true}); -+ const sourceTabId = tabs[0].id; -+ -+ const sourceTabFrames = await browser.webNavigation.getAllFrames({tabId: sourceTabId}); -+ -+ browser.webNavigation.onCreatedNavigationTarget.addListener((msg) => { -+ browser.test.sendMessage("webNavOnCreated", msg); -+ }); -+ -+ browser.webNavigation.onCompleted.addListener(async (msg) => { -+ // NOTE: checking the url is currently necessary because of Bug 1252129 -+ // ( Filter out webNavigation events related to new window initialization phase). -+ if (msg.tabId !== sourceTabId && msg.url !== "about:blank") { -+ await browser.tabs.remove(msg.tabId); -+ browser.test.sendMessage("webNavOnCompleted", msg); -+ } -+ }); -+ -+ browser.tabs.onCreated.addListener((tab) => { -+ browser.test.sendMessage("tabsOnCreated", tab.id); -+ }); -+ -+ browser.test.onMessage.addListener(({type, code}) => { -+ if (type === "execute-contentscript") { -+ browser.tabs.executeScript(sourceTabId, {code: code}); -+ } -+ }); -+ -+ browser.test.sendMessage("expectedSourceTab", { -+ sourceTabId, sourceTabFrames, -+ }); -+} -+ -+add_task(async function test_window_open_in_named_win() { -+ const tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser, SOURCE_PAGE); -+ -+ gBrowser.selectedTab = tab1; -+ -+ const extension = ExtensionTestUtils.loadExtension({ -+ background, -+ manifest: { -+ permissions: ["webNavigation", "tabs", ""], -+ }, -+ }); -+ -+ await extension.startup(); -+ -+ const expectedSourceTab = await extension.awaitMessage("expectedSourceTab"); -+ -+ info("open a url in a new named window from a window.open call"); -+ -+ await runCreatedNavigationTargetTest({ -+ extension, -+ openNavTarget() { -+ extension.sendMessage({ -+ type: "execute-contentscript", -+ code: `window.open("${OPENED_PAGE}#new-named-window-open", "TestWinName"); true;`, -+ }); -+ }, -+ expectedWebNavProps: { -+ sourceTabId: expectedSourceTab.sourceTabId, -+ sourceFrameId: 0, -+ url: `${OPENED_PAGE}#new-named-window-open`, -+ }, -+ }); -+ -+ info("open a url in an existent named window from a window.open call"); -+ -+ await runCreatedNavigationTargetTest({ -+ extension, -+ openNavTarget() { -+ extension.sendMessage({ -+ type: "execute-contentscript", -+ code: `window.open("${OPENED_PAGE}#existent-named-window-open", "TestWinName"); true;`, -+ }); -+ }, -+ expectedWebNavProps: { -+ sourceTabId: expectedSourceTab.sourceTabId, -+ sourceFrameId: 0, -+ url: `${OPENED_PAGE}#existent-named-window-open`, -+ }, -+ }); -+ -+ assertNoPendingCreatedNavigationTargetData(); -+ -+ await BrowserTestUtils.removeTab(tab1); -+ -+ await extension.unload(); -+}); -diff --git browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_subframe_window_open.js browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_subframe_window_open.js -new file mode 100644 -index 000000000000..147c943f7102 ---- /dev/null -+++ browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_subframe_window_open.js -@@ -0,0 +1,163 @@ -+/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ -+/* vim: set sts=2 sw=2 et tw=80: */ -+"use strict"; -+ -+Services.scriptloader.loadSubScript(new URL("head_webNavigation.js", gTestPath).href, -+ this); -+ -+async function background() { -+ const tabs = await browser.tabs.query({active: true, currentWindow: true}); -+ const sourceTabId = tabs[0].id; -+ -+ const sourceTabFrames = await browser.webNavigation.getAllFrames({tabId: sourceTabId}); -+ -+ browser.webNavigation.onCreatedNavigationTarget.addListener((msg) => { -+ browser.test.sendMessage("webNavOnCreated", msg); -+ }); -+ -+ browser.webNavigation.onCompleted.addListener(async (msg) => { -+ // NOTE: checking the url is currently necessary because of Bug 1252129 -+ // ( Filter out webNavigation events related to new window initialization phase). -+ if (msg.tabId !== sourceTabId && msg.url !== "about:blank") { -+ await browser.tabs.remove(msg.tabId); -+ browser.test.sendMessage("webNavOnCompleted", msg); -+ } -+ }); -+ -+ browser.tabs.onCreated.addListener((tab) => { -+ browser.test.sendMessage("tabsOnCreated", tab.id); -+ }); -+ -+ browser.test.onMessage.addListener(({type, code}) => { -+ if (type === "execute-contentscript") { -+ browser.tabs.executeScript(sourceTabId, {code: code}); -+ } -+ }); -+ -+ browser.test.sendMessage("expectedSourceTab", { -+ sourceTabId, sourceTabFrames, -+ }); -+} -+ -+add_task(async function test_window_open_from_subframe() { -+ const tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser, SOURCE_PAGE); -+ -+ gBrowser.selectedTab = tab1; -+ -+ const extension = ExtensionTestUtils.loadExtension({ -+ background, -+ manifest: { -+ permissions: ["webNavigation", "tabs", ""], -+ }, -+ }); -+ -+ await extension.startup(); -+ -+ const expectedSourceTab = await extension.awaitMessage("expectedSourceTab"); -+ -+ info("open a url in a new tab from subframe window.open call"); -+ -+ await runCreatedNavigationTargetTest({ -+ extension, -+ openNavTarget() { -+ extension.sendMessage({ -+ type: "execute-contentscript", -+ code: `document.querySelector('iframe').contentWindow.open("${OPENED_PAGE}#new-tab-from-window-open-subframe"); true;`, -+ }); -+ }, -+ expectedWebNavProps: { -+ sourceTabId: expectedSourceTab.sourceTabId, -+ sourceFrameId: expectedSourceTab.sourceTabFrames[1].frameId, -+ url: `${OPENED_PAGE}#new-tab-from-window-open-subframe`, -+ }, -+ }); -+ -+ info("open a url in a new window from subframe window.open call"); -+ -+ await runCreatedNavigationTargetTest({ -+ extension, -+ openNavTarget() { -+ extension.sendMessage({ -+ type: "execute-contentscript", -+ code: `document.querySelector('iframe').contentWindow.open("${OPENED_PAGE}#new-win-from-window-open-subframe", "_blank", "toolbar=0"); true;`, -+ }); -+ }, -+ expectedWebNavProps: { -+ sourceTabId: expectedSourceTab.sourceTabId, -+ sourceFrameId: expectedSourceTab.sourceTabFrames[1].frameId, -+ url: `${OPENED_PAGE}#new-win-from-window-open-subframe`, -+ }, -+ }); -+ -+ assertNoPendingCreatedNavigationTargetData(); -+ -+ await BrowserTestUtils.removeTab(tab1); -+ -+ await extension.unload(); -+}); -+ -+add_task(async function test_window_open_close_from_browserAction_popup() { -+ const tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser, SOURCE_PAGE); -+ -+ gBrowser.selectedTab = tab1; -+ -+ function popup() { -+ window.open("", "_self").close(); -+ -+ browser.test.sendMessage("browserAction_popup_executed"); -+ } -+ -+ const extension = ExtensionTestUtils.loadExtension({ -+ background, -+ manifest: { -+ browser_action: { -+ default_popup: "popup.html", -+ }, -+ permissions: ["webNavigation", "tabs", ""], -+ }, -+ files: { -+ "popup.html": ` -+ -+ -+ -+ -+ -+ -+ -+ -+ `, -+ "popup.js": popup, -+ }, -+ }); -+ -+ await extension.startup(); -+ -+ const expectedSourceTab = await extension.awaitMessage("expectedSourceTab"); -+ -+ clickBrowserAction(extension); -+ -+ await extension.awaitMessage("browserAction_popup_executed"); -+ -+ info("open a url in a new tab from a window.open call"); -+ -+ await runCreatedNavigationTargetTest({ -+ extension, -+ openNavTarget() { -+ extension.sendMessage({ -+ type: "execute-contentscript", -+ code: `window.open("${OPENED_PAGE}#new-tab-from-window-open"); true;`, -+ }); -+ }, -+ expectedWebNavProps: { -+ sourceTabId: expectedSourceTab.sourceTabId, -+ sourceFrameId: 0, -+ url: `${OPENED_PAGE}#new-tab-from-window-open`, -+ }, -+ }); -+ -+ assertNoPendingCreatedNavigationTargetData(); -+ -+ await BrowserTestUtils.removeTab(tab1); -+ -+ await extension.unload(); -+}); -diff --git browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js -index 232b9321fcd3..b56097e44484 100644 ---- browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js -+++ browser/components/extensions/test/browser/browser_ext_webNavigation_onCreatedNavigationTarget_window_open.js -@@ -2,9 +2,8 @@ - /* vim: set sts=2 sw=2 et tw=80: */ - "use strict"; - --const BASE_URL = "http://mochi.test:8888/browser/browser/components/extensions/test/browser"; --const SOURCE_PAGE = `${BASE_URL}/webNav_createdTargetSource.html`; --const OPENED_PAGE = `${BASE_URL}/webNav_createdTarget.html`; -+Services.scriptloader.loadSubScript(new URL("head_webNavigation.js", gTestPath).href, -+ this); - - async function background() { - const tabs = await browser.tabs.query({active: true, currentWindow: true}); -@@ -40,34 +39,6 @@ async function background() { - }); - } - --async function runTestCase({extension, openNavTarget, expectedWebNavProps}) { -- await openNavTarget(); -- -- const webNavMsg = await extension.awaitMessage("webNavOnCreated"); -- const createdTabId = await extension.awaitMessage("tabsOnCreated"); -- const completedNavMsg = await extension.awaitMessage("webNavOnCompleted"); -- -- let {sourceTabId, sourceFrameId, url} = expectedWebNavProps; -- -- is(webNavMsg.tabId, createdTabId, "Got the expected tabId property"); -- is(webNavMsg.sourceTabId, sourceTabId, "Got the expected sourceTabId property"); -- is(webNavMsg.sourceFrameId, sourceFrameId, "Got the expected sourceFrameId property"); -- is(webNavMsg.url, url, "Got the expected url property"); -- -- is(completedNavMsg.tabId, createdTabId, "Got the expected webNavigation.onCompleted tabId property"); -- is(completedNavMsg.url, url, "Got the expected webNavigation.onCompleted url property"); --} -- --// Test that there are no pending createdNavigationTarget messages still tracked --// in WebNavigation.jsm (to be called before the extension is unloaded, because --// once the last extension which have subscribed a webNavigation event is unloaded --// all the pending created navigation target data is completely cleared). --function assertNoPendingCreatedNavigationTargetData() { -- const {Manager} = Cu.import("resource://gre/modules/WebNavigation.jsm", {}); -- Assert.equal(Manager.createdNavigationTargetByOuterWindowId.size, 0, -- "There should be no pending createdNavigationTarget messages in WebNavigation"); --} -- - add_task(async function test_window_open() { - const tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser, SOURCE_PAGE); - -@@ -86,7 +57,7 @@ add_task(async function test_window_open() { - - info("open a url in a new tab from a window.open call"); - -- await runTestCase({ -+ await runCreatedNavigationTargetTest({ - extension, - openNavTarget() { - extension.sendMessage({ -@@ -103,7 +74,7 @@ add_task(async function test_window_open() { - - info("open a url in a new window from a window.open call"); - -- await runTestCase({ -+ await runCreatedNavigationTargetTest({ - extension, - openNavTarget() { - extension.sendMessage({ -@@ -125,63 +96,6 @@ add_task(async function test_window_open() { - await extension.unload(); - }); - --add_task(async function test_window_open_from_subframe() { -- const tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser, SOURCE_PAGE); -- -- gBrowser.selectedTab = tab1; -- -- const extension = ExtensionTestUtils.loadExtension({ -- background, -- manifest: { -- permissions: ["webNavigation", "tabs", ""], -- }, -- }); -- -- await extension.startup(); -- -- const expectedSourceTab = await extension.awaitMessage("expectedSourceTab"); -- -- info("open a url in a new tab from subframe window.open call"); -- -- await runTestCase({ -- extension, -- openNavTarget() { -- extension.sendMessage({ -- type: "execute-contentscript", -- code: `document.querySelector('iframe').contentWindow.open("${OPENED_PAGE}#new-tab-from-window-open-subframe"); true;`, -- }); -- }, -- expectedWebNavProps: { -- sourceTabId: expectedSourceTab.sourceTabId, -- sourceFrameId: expectedSourceTab.sourceTabFrames[1].frameId, -- url: `${OPENED_PAGE}#new-tab-from-window-open-subframe`, -- }, -- }); -- -- info("open a url in a new window from subframe window.open call"); -- -- await runTestCase({ -- extension, -- openNavTarget() { -- extension.sendMessage({ -- type: "execute-contentscript", -- code: `document.querySelector('iframe').contentWindow.open("${OPENED_PAGE}#new-win-from-window-open-subframe", "_blank", "toolbar=0"); true;`, -- }); -- }, -- expectedWebNavProps: { -- sourceTabId: expectedSourceTab.sourceTabId, -- sourceFrameId: expectedSourceTab.sourceTabFrames[1].frameId, -- url: `${OPENED_PAGE}#new-win-from-window-open-subframe`, -- }, -- }); -- -- assertNoPendingCreatedNavigationTargetData(); -- -- await BrowserTestUtils.removeTab(tab1); -- -- await extension.unload(); --}); -- - add_task(async function test_window_open_close_from_browserAction_popup() { - const tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser, SOURCE_PAGE); - -@@ -226,7 +140,7 @@ add_task(async function test_window_open_close_from_browserAction_popup() { - - info("open a url in a new tab from a window.open call"); - -- await runTestCase({ -+ await runCreatedNavigationTargetTest({ - extension, - openNavTarget() { - extension.sendMessage({ -@@ -247,60 +161,3 @@ add_task(async function test_window_open_close_from_browserAction_popup() { - - await extension.unload(); - }); -- --add_task(async function test_window_open_in_named_win() { -- const tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser, SOURCE_PAGE); -- -- gBrowser.selectedTab = tab1; -- -- const extension = ExtensionTestUtils.loadExtension({ -- background, -- manifest: { -- permissions: ["webNavigation", "tabs", ""], -- }, -- }); -- -- await extension.startup(); -- -- const expectedSourceTab = await extension.awaitMessage("expectedSourceTab"); -- -- info("open a url in a new named window from a window.open call"); -- -- await runTestCase({ -- extension, -- openNavTarget() { -- extension.sendMessage({ -- type: "execute-contentscript", -- code: `window.open("${OPENED_PAGE}#new-named-window-open", "TestWinName"); true;`, -- }); -- }, -- expectedWebNavProps: { -- sourceTabId: expectedSourceTab.sourceTabId, -- sourceFrameId: 0, -- url: `${OPENED_PAGE}#new-named-window-open`, -- }, -- }); -- -- info("open a url in an existent named window from a window.open call"); -- -- await runTestCase({ -- extension, -- openNavTarget() { -- extension.sendMessage({ -- type: "execute-contentscript", -- code: `window.open("${OPENED_PAGE}#existent-named-window-open", "TestWinName"); true;`, -- }); -- }, -- expectedWebNavProps: { -- sourceTabId: expectedSourceTab.sourceTabId, -- sourceFrameId: 0, -- url: `${OPENED_PAGE}#existent-named-window-open`, -- }, -- }); -- -- assertNoPendingCreatedNavigationTargetData(); -- -- await BrowserTestUtils.removeTab(tab1); -- -- await extension.unload(); --}); -diff --git browser/components/extensions/test/browser/head_webNavigation.js browser/components/extensions/test/browser/head_webNavigation.js -new file mode 100644 -index 000000000000..a98ccd9934ba ---- /dev/null -+++ browser/components/extensions/test/browser/head_webNavigation.js -@@ -0,0 +1,39 @@ -+/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ -+/* vim: set sts=2 sw=2 et tw=80: */ -+"use strict"; -+ -+/* exported BASE_URL, SOURCE_PAGE, OPENED_PAGE, -+ runCreatedNavigationTargetTest, assertNoPendingCreatedNavigationTargetData */ -+ -+const BASE_URL = "http://mochi.test:8888/browser/browser/components/extensions/test/browser"; -+const SOURCE_PAGE = `${BASE_URL}/webNav_createdTargetSource.html`; -+const OPENED_PAGE = `${BASE_URL}/webNav_createdTarget.html`; -+ -+async function runCreatedNavigationTargetTest({extension, openNavTarget, expectedWebNavProps}) { -+ await openNavTarget(); -+ -+ const webNavMsg = await extension.awaitMessage("webNavOnCreated"); -+ const createdTabId = await extension.awaitMessage("tabsOnCreated"); -+ const completedNavMsg = await extension.awaitMessage("webNavOnCompleted"); -+ -+ let {sourceTabId, sourceFrameId, url} = expectedWebNavProps; -+ -+ is(webNavMsg.tabId, createdTabId, "Got the expected tabId property"); -+ is(webNavMsg.sourceTabId, sourceTabId, "Got the expected sourceTabId property"); -+ is(webNavMsg.sourceFrameId, sourceFrameId, "Got the expected sourceFrameId property"); -+ is(webNavMsg.url, url, "Got the expected url property"); -+ -+ is(completedNavMsg.tabId, createdTabId, "Got the expected webNavigation.onCompleted tabId property"); -+ is(completedNavMsg.url, url, "Got the expected webNavigation.onCompleted url property"); -+} -+ -+ -+// Test that there are no pending createdNavigationTarget messages still tracked -+// in WebNavigation.jsm (to be called before the extension is unloaded, because -+// once the last extension which have subscribed a webNavigation event is unloaded -+// all the pending created navigation target data is completely cleared). -+function assertNoPendingCreatedNavigationTargetData() { -+ const {Manager} = Cu.import("resource://gre/modules/WebNavigation.jsm", {}); -+ Assert.equal(Manager.createdNavigationTargetByOuterWindowId.size, 0, -+ "There should be no pending createdNavigationTarget messages in WebNavigation"); -+} diff --git a/www/waterfox/files/patch-bug1403465 b/www/waterfox/files/patch-bug1403465 deleted file mode 100644 index 23ed5a79d30d..000000000000 --- a/www/waterfox/files/patch-bug1403465 +++ /dev/null @@ -1,60 +0,0 @@ -commit f2c88f86dc5b -Author: Emilio Cobos Álvarez -Date: Thu Sep 28 10:40:02 2017 +0200 - - Bug 1403465 - style: Avoid creating element data in Servo_ResolvePseudoStyle. r=bholley, a=sledru - - The reason the patch in bug 1402285 doesn't work is that we call this function - multiple times with the same element. This fixes it. - - MozReview-Commit-ID: Ko9zirCOzTR - - --HG-- - extra : transplant_source : qegB%06%15r/%F2%BDm%86%9C%C7%91%06%FA-%1E%A8 ---- - servo/ports/geckolib/glue.rs | 27 +++++++++++++++++---------- - 1 file changed, 17 insertions(+), 10 deletions(-) - -diff --git servo/ports/geckolib/glue.rs servo/ports/geckolib/glue.rs -index 714947fc1812..2f2938f4890b 100644 ---- servo/ports/geckolib/glue.rs -+++ servo/ports/geckolib/glue.rs -@@ -1767,21 +1767,28 @@ pub extern "C" fn Servo_ResolvePseudoStyle(element: RawGeckoElementBorrowed, - -> ServoStyleContextStrong - { - let element = GeckoElement(element); -- let data = unsafe { element.ensure_data() }; - let doc_data = PerDocumentStyleData::from_ffi(raw_data).borrow(); - - debug!("Servo_ResolvePseudoStyle: {:?} {:?}, is_probe: {}", - element, PseudoElement::from_pseudo_type(pseudo_type), is_probe); - -- // FIXME(bholley): Assert against this. -- if !data.has_styles() { -- warn!("Calling Servo_ResolvePseudoStyle on unstyled element"); -- return if is_probe { -- Strong::null() -- } else { -- doc_data.default_computed_values().clone().into() -- }; -- } -+ let data = element.borrow_data(); -+ -+ let data = match data.as_ref() { -+ Some(data) if data.has_styles() => data, -+ _ => { -+ // FIXME(bholley, emilio): Assert against this. -+ // -+ // Known offender is nsMathMLmoFrame::MarkIntrinsicISizesDirty, -+ // which goes and does a bunch of work involving style resolution. -+ warn!("Calling Servo_ResolvePseudoStyle on unstyled element"); -+ return if is_probe { -+ Strong::null() -+ } else { -+ doc_data.default_computed_values().clone().into() -+ }; -+ } -+ }; - - let pseudo = PseudoElement::from_pseudo_type(pseudo_type) - .expect("ResolvePseudoStyle with a non-pseudo?"); diff --git a/www/waterfox/files/patch-bug1403466 b/www/waterfox/files/patch-bug1403466 deleted file mode 100644 index 434752911bd1..000000000000 --- a/www/waterfox/files/patch-bug1403466 +++ /dev/null @@ -1,50 +0,0 @@ -commit 0d4a6317df44 -Author: Mike de Boer -Date: Tue Oct 10 12:44:04 2017 +0200 - - Bug 1403466 - Don't set a max-height on panelviews used by WebExtensions, because it causes browser contents to be cut-off. r=Gijs, a=ritu - - Setting a max-height caused the '_handleDOMChange' method in ext-browser-content.js - to consistently lie about the scrollHeight, since it was never allowed to grow - beyond the maxHeight - even when the document needs to be larger to fit its contents. - We don't need this aggressiveness in Photon panels anyway, so that makes it - doubly safe to remove this code. - - MozReview-Commit-ID: HJVMXXHS4By - - --HG-- - extra : source : cd62fb50fe61504937ff3d37db3852bae0d73d0c ---- - browser/components/extensions/ExtensionPopups.jsm | 10 +--------- - 1 file changed, 1 insertion(+), 9 deletions(-) - -diff --git browser/components/extensions/ExtensionPopups.jsm browser/components/extensions/ExtensionPopups.jsm -index 5ac4f43943f1..cc02e48b32dd 100644 ---- browser/components/extensions/ExtensionPopups.jsm -+++ browser/components/extensions/ExtensionPopups.jsm -@@ -123,7 +123,6 @@ class BasePopup { - - if (this.viewNode) { - this.viewNode.removeEventListener(this.DESTROY_EVENT, this); -- this.viewNode.style.maxHeight = ""; - delete this.viewNode.customRectGetter; - } - -@@ -331,16 +330,9 @@ class BasePopup { - height = Math.min(height, maxHeight); - this.browser.style.height = `${height}px`; - -- // Set a maximum height on the element to our preferred -- // maximum height, so that the PanelUI resizing code can make an accurate -- // calculation. If we don't do this, the flex sizing logic will prevent us -- // from ever reporting a preferred size smaller than the height currently -- // available to us in the panel. -- height = Math.max(height, this.viewHeight); -- this.viewNode.style.maxHeight = `${height}px`; - // Used by the panelmultiview code to figure out sizing without reparenting - // (which would destroy the browser and break us). -- this.lastCalculatedInViewHeight = height; -+ this.lastCalculatedInViewHeight = Math.max(height, this.viewHeight); - } else { - this.browser.style.width = `${width}px`; - this.browser.style.minWidth = `${width}px`; diff --git a/www/waterfox/files/patch-bug1403473 b/www/waterfox/files/patch-bug1403473 deleted file mode 100644 index 87196f41522a..000000000000 --- a/www/waterfox/files/patch-bug1403473 +++ /dev/null @@ -1,27 +0,0 @@ -commit 3da3e74521d4 (HEAD) -Author: Thomas Nguyen -Date: Fri Sep 29 01:46:00 2017 -0400 - - Bug 1403473 - Init loggingEnable for hashcompleter. r=dimi, a=sledru - - MozReview-Commit-ID: 1BpErwmbgCM - - --HG-- - extra : amend_source : 5993fe27195003ac1fa77f89b4d14187cbff591e ---- - toolkit/components/url-classifier/nsUrlClassifierHashCompleter.js | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git toolkit/components/url-classifier/nsUrlClassifierHashCompleter.js toolkit/components/url-classifier/nsUrlClassifierHashCompleter.js -index eac72dadabd3..16b1b7dc7c52 100644 ---- toolkit/components/url-classifier/nsUrlClassifierHashCompleter.js -+++ toolkit/components/url-classifier/nsUrlClassifierHashCompleter.js -@@ -184,6 +184,8 @@ function HashCompleter() { - - Services.obs.addObserver(this, "quit-application"); - Services.prefs.addObserver(PREF_DEBUG_ENABLED, this); -+ -+ loggingEnabled = Services.prefs.getBoolPref(PREF_DEBUG_ENABLED); - } - - HashCompleter.prototype = { diff --git a/www/waterfox/files/patch-bug1403592 b/www/waterfox/files/patch-bug1403592 deleted file mode 100644 index a716a4fd183e..000000000000 --- a/www/waterfox/files/patch-bug1403592 +++ /dev/null @@ -1,157 +0,0 @@ -commit 79c72166bf05 -Author: Emilio Cobos Álvarez -Date: Wed Sep 27 18:09:31 2017 +0200 - - Bug 1403592 - Never flush the user font set when getting font metrics from style resolution. r=Manishearth, a=sledru - - In this case, the caller doesn't go through all the PreTraverseSync stuff (we - don't really want it to do so), via GetComputedStyleNoFlush. - - It makes sense to not flush the user font set that case, we'll schedule a - restyle properly if / when needed. - - Since the set should be flushed otherwise, let's just not flush it from the - styling code. - - MozReview-Commit-ID: LLHfxemJ8QQ - - --HG-- - extra : source : 0a0cc4bb885a2487b643e94fc244620751616d03 ---- - layout/style/ServoBindings.cpp | 7 ++++--- - layout/style/nsRuleNode.cpp | 13 ++++++++----- - layout/style/nsRuleNode.h | 8 +++++++- - 3 files changed, 19 insertions(+), 9 deletions(-) - -diff --git layout/style/ServoBindings.cpp layout/style/ServoBindings.cpp -index ac2a6cc2ec01..d248e6ad1401 100644 ---- layout/style/ServoBindings.cpp -+++ layout/style/ServoBindings.cpp -@@ -2482,9 +2482,10 @@ Gecko_GetFontMetrics(RawGeckoPresContextBorrowed aPresContext, - - nsPresContext* presContext = const_cast(aPresContext); - presContext->SetUsesExChUnits(true); -- RefPtr fm = nsRuleNode::GetMetricsFor(presContext, aIsVertical, -- aFont, aFontSize, -- aUseUserFontSet); -+ RefPtr fm = nsRuleNode::GetMetricsFor( -+ presContext, aIsVertical, aFont, aFontSize, aUseUserFontSet, -+ nsRuleNode::FlushUserFontSet::No); -+ - ret.mXSize = fm->XHeight(); - gfxFloat zeroWidth = fm->GetThebesFontGroup()->GetFirstValidFont()-> - GetMetrics(fm->Orientation()).zeroOrAveCharWidth; -diff --git layout/style/nsRuleNode.cpp layout/style/nsRuleNode.cpp -index ccccce98009e..fbb5e3824e2f 100644 ---- layout/style/nsRuleNode.cpp -+++ layout/style/nsRuleNode.cpp -@@ -377,7 +377,8 @@ nsRuleNode::GetMetricsFor(nsPresContext* aPresContext, - bool aIsVertical, - const nsStyleFont* aStyleFont, - nscoord aFontSize, -- bool aUseUserFontSet) -+ bool aUseUserFontSet, -+ FlushUserFontSet aFlushUserFontSet) - { - nsFont font = aStyleFont->mFont; - font.size = aFontSize; -@@ -387,8 +388,9 @@ nsRuleNode::GetMetricsFor(nsPresContext* aPresContext, - params.language = aStyleFont->mLanguage; - params.explicitLanguage = aStyleFont->mExplicitLanguage; - params.orientation = orientation; -- params.userFontSet = -- aUseUserFontSet ? aPresContext->GetUserFontSet() : nullptr; -+ params.userFontSet = aUseUserFontSet -+ ? aPresContext->GetUserFontSet(aFlushUserFontSet == FlushUserFontSet::Yes) -+ : nullptr; - params.textPerf = aPresContext->GetTextPerfMetrics(); - return aPresContext->DeviceContext()->GetMetricsFor(font, params); - } -@@ -408,8 +410,9 @@ nsRuleNode::GetMetricsFor(nsPresContext* aPresContext, - isVertical = true; - } - } -- return nsRuleNode::GetMetricsFor(aPresContext, isVertical, aStyleFont, -- aFontSize, aUseUserFontSet); -+ return nsRuleNode::GetMetricsFor( -+ aPresContext, isVertical, aStyleFont, aFontSize, aUseUserFontSet, -+ FlushUserFontSet::Yes); - } - - /* static */ -diff --git layout/style/nsRuleNode.h layout/style/nsRuleNode.h -index 423545ffd198..719eb0c51eb0 100644 ---- layout/style/nsRuleNode.h -+++ layout/style/nsRuleNode.h -@@ -807,11 +807,17 @@ public: - bool aConvertListItem = false); - static void EnsureInlineDisplay(mozilla::StyleDisplay& display); - -+ enum class FlushUserFontSet { -+ Yes, -+ No, -+ }; -+ - static already_AddRefed GetMetricsFor(nsPresContext* aPresContext, - bool aIsVertical, - const nsStyleFont* aStyleFont, - nscoord aFontSize, -- bool aUseUserFontSet); -+ bool aUseUserFontSet, -+ FlushUserFontSet aFlushUserFontSet); - - static already_AddRefed GetMetricsFor(nsPresContext* aPresContext, - nsStyleContext* aStyleContext, -commit f01f1d6ac516 -Author: Emilio Cobos Álvarez -Date: Wed Sep 27 18:16:25 2017 +0200 - - Bug 1403592 - Crashtest. r=Manishearth, a=sledru - - I've made it crash at least once, though it's intermittent-y. I guess it's - better than no crashtest. - - MozReview-Commit-ID: 5m2VCrEs8lM - - --HG-- - extra : source : c050d8574203c0344a9570fef73df51a1a489091 - extra : amend_source : 45265a4fbe7d484fc784c3389f912d45eebf15de ---- - layout/style/crashtests/1403592.html | 19 +++++++++++++++++++ - layout/style/crashtests/crashtests.list | 1 + - 2 files changed, 20 insertions(+) - -diff --git layout/style/crashtests/1403592.html layout/style/crashtests/1403592.html -new file mode 100644 -index 000000000000..fdd810b88603 ---- /dev/null -+++ layout/style/crashtests/1403592.html -@@ -0,0 +1,19 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git layout/style/crashtests/crashtests.list layout/style/crashtests/crashtests.list -index 565abf6c1f83..e811e54554b3 100644 ---- layout/style/crashtests/crashtests.list -+++ layout/style/crashtests/crashtests.list -@@ -204,3 +204,4 @@ load 1391577.html - load 1398581.html - load 1402218-1.html - load 1402366.html -+load 1403592.html diff --git a/www/waterfox/files/patch-bug1403721 b/www/waterfox/files/patch-bug1403721 deleted file mode 100644 index 6459c0894087..000000000000 --- a/www/waterfox/files/patch-bug1403721 +++ /dev/null @@ -1,182 +0,0 @@ -commit 637bcd0503db -Author: Tom Schuster -Date: Thu Sep 28 12:46:09 2017 +0200 - - Bug 1403723 - Correct metadata when using management.get. r=mixedpuppy, a=ritu - * * * - Bug 1403721 - Limit management.get to allowed addon types. r=mixedpuppy ---- - toolkit/components/extensions/ext-management.js | 36 ++++++++++++++-------- - .../test/xpcshell/test_ext_experiments.js | 25 +++++++++++++++ - .../test/xpcshell/test_ext_management.js | 8 +++++ - .../mozapps/extensions/internal/XPIProvider.jsm | 4 +++ - 4 files changed, 61 insertions(+), 12 deletions(-) - -diff --git toolkit/components/extensions/ext-management.js toolkit/components/extensions/ext-management.js -index 0e46732b201d..d86a15ceb6a1 100644 ---- toolkit/components/extensions/ext-management.js -+++ toolkit/components/extensions/ext-management.js -@@ -91,6 +91,16 @@ const listenerMap = new WeakMap(); - // Some management APIs are intentionally limited. - const allowedTypes = ["theme", "extension"]; - -+function checkAllowedAddon(addon) { -+ if (addon.isSystem || addon.isAPIExtension) { -+ return false; -+ } -+ if (addon.type == "extension" && !addon.isWebExtension) { -+ return false; -+ } -+ return allowedTypes.includes(addon.type); -+} -+ - class AddonListener { - constructor() { - AddonManager.addAddonListener(this); -@@ -106,33 +116,29 @@ class AddonListener { - return getExtensionInfoForAddon(ext, addon); - } - -- checkAllowed(addon) { -- return !addon.isSystem && allowedTypes.includes(addon.type); -- } -- - onEnabled(addon) { -- if (!this.checkAllowed(addon)) { -+ if (!checkAllowedAddon(addon)) { - return; - } - this.emit("onEnabled", this.getExtensionInfo(addon)); - } - - onDisabled(addon) { -- if (!this.checkAllowed(addon)) { -+ if (!checkAllowedAddon(addon)) { - return; - } - this.emit("onDisabled", this.getExtensionInfo(addon)); - } - - onInstalled(addon) { -- if (!this.checkAllowed(addon)) { -+ if (!checkAllowedAddon(addon)) { - return; - } - this.emit("onInstalled", this.getExtensionInfo(addon)); - } - - onUninstalled(addon) { -- if (!this.checkAllowed(addon)) { -+ if (!checkAllowedAddon(addon)) { - return; - } - this.emit("onUninstalled", this.getExtensionInfo(addon)); -@@ -167,16 +173,22 @@ this.management = class extends ExtensionAPI { - management: { - async get(id) { - let addon = await AddonManager.getAddonByID(id); -- if (!addon.isSystem) { -- return getExtensionInfoForAddon(extension, addon); -+ if (!addon) { -+ throw new ExtensionError(`No such addon ${id}`); -+ } -+ if (!checkAllowedAddon(addon)) { -+ throw new ExtensionError("get not allowed for this addon"); - } -+ // If the extension is enabled get it and use it for more data. -+ let ext = GlobalManager.extensionMap.get(addon.id); -+ return getExtensionInfoForAddon(ext, addon); - }, - - async getAll() { - let addons = await AddonManager.getAddonsByTypes(allowedTypes); -- return addons.filter(addon => !addon.isSystem).map(addon => { -+ return addons.filter(checkAllowedAddon).map(addon => { - // If the extension is enabled get it and use it for more data. -- let ext = addon.isWebExtension && GlobalManager.extensionMap.get(addon.id); -+ let ext = GlobalManager.extensionMap.get(addon.id); - return getExtensionInfoForAddon(ext, addon); - }); - }, -diff --git toolkit/components/extensions/test/xpcshell/test_ext_experiments.js toolkit/components/extensions/test/xpcshell/test_ext_experiments.js -index 343e1e50d983..c8d097decf90 100644 ---- toolkit/components/extensions/test/xpcshell/test_ext_experiments.js -+++ toolkit/components/extensions/test/xpcshell/test_ext_experiments.js -@@ -148,6 +148,31 @@ add_task(async function test_experiments_api() { - let hello = await promise; - equal(hello, "Here I am", "Should get hello from add-on"); - -+ // Install management test add-on. -+ let managementAddon = ExtensionTestUtils.loadExtension({ -+ manifest: { -+ applications: {gecko: {id: "management@web.extension"}}, -+ permissions: ["management"], -+ }, -+ async background() { -+ // Should find the simple extension. -+ let normalAddon = await browser.management.get("boring@web.extension"); -+ browser.test.assertEq(normalAddon.id, "boring@web.extension", "Found boring addon"); -+ -+ try { -+ // Not allowed to get the API experiment. -+ await browser.management.get("fooBar@experiments.addons.mozilla.org"); -+ } catch (e) { -+ browser.test.sendMessage("done"); -+ } -+ }, -+ useAddonManager: "temporary", -+ }); -+ -+ await managementAddon.startup(); -+ await managementAddon.awaitMessage("done"); -+ await managementAddon.unload(); -+ - // Cleanup. - apiAddon.uninstall(); - -diff --git toolkit/components/extensions/test/xpcshell/test_ext_management.js toolkit/components/extensions/test/xpcshell/test_ext_management.js -index c1702042c054..975c14a566e4 100644 ---- toolkit/components/extensions/test/xpcshell/test_ext_management.js -+++ toolkit/components/extensions/test/xpcshell/test_ext_management.js -@@ -22,6 +22,7 @@ add_task(async function test_management_getAll() { - }, - name: id, - version: "1.0", -+ short_name: id, - permissions: ["management"], - }; - } -@@ -55,11 +56,18 @@ add_task(async function test_management_getAll() { - for (let id of [id1, id2]) { - let addon = addons.find(a => { return a.id === id; }); - equal(addon.name, id, `The extension with id ${id} was returned by getAll.`); -+ equal(addon.shortName, id, "Additional extension metadata was correct"); - } - - extension2.sendMessage("getAddon", id1); - let addon = await extension2.awaitMessage("addon"); - equal(addon.name, id1, `The extension with id ${id1} was returned by get.`); -+ equal(addon.shortName, id1, "Additional extension metadata was correct"); -+ -+ extension2.sendMessage("getAddon", id2); -+ addon = await extension2.awaitMessage("addon"); -+ equal(addon.name, id2, `The extension with id ${id2} was returned by get.`); -+ equal(addon.shortName, id2, "Additional extension metadata was correct"); - - await extension2.unload(); - await extension1.unload(); -diff --git toolkit/mozapps/extensions/internal/XPIProvider.jsm toolkit/mozapps/extensions/internal/XPIProvider.jsm -index 0027e13e3804..56f3982e7214 100644 ---- toolkit/mozapps/extensions/internal/XPIProvider.jsm -+++ toolkit/mozapps/extensions/internal/XPIProvider.jsm -@@ -5197,6 +5197,10 @@ AddonWrapper.prototype = { - return isWebExtension(addonFor(this).type); - }, - -+ get isAPIExtension() { -+ return addonFor(this).type == "apiextension"; -+ }, -+ - get temporarilyInstalled() { - return addonFor(this)._installLocation == TemporaryInstallLocation; - }, diff --git a/www/waterfox/files/patch-bug1403998 b/www/waterfox/files/patch-bug1403998 deleted file mode 100644 index 585198482647..000000000000 --- a/www/waterfox/files/patch-bug1403998 +++ /dev/null @@ -1,167 +0,0 @@ -commit b5254d352036 -Author: Honza Bambas -Date: Mon Oct 2 10:12:00 2017 -0400 - - Bug 1403998 - Make view-source channels return correct resultPrincipalURI via LoadInfo after redirect. r=bz, a=ritu - - --HG-- - extra : source : f693bf1345f941592b1ce19514a2bbf00e6ef06a ---- - .../protocol/viewsource/nsViewSourceChannel.cpp | 95 ++++++++++++++++++---- - netwerk/protocol/viewsource/nsViewSourceChannel.h | 10 +++ - 2 files changed, 91 insertions(+), 14 deletions(-) - -diff --git netwerk/protocol/viewsource/nsViewSourceChannel.cpp netwerk/protocol/viewsource/nsViewSourceChannel.cpp -index 4c7f335352d3..1f1ee01818fb 100644 ---- netwerk/protocol/viewsource/nsViewSourceChannel.cpp -+++ netwerk/protocol/viewsource/nsViewSourceChannel.cpp -@@ -129,12 +129,87 @@ nsViewSourceChannel::InitSrcdoc(nsIURI* aURI, - mApplicationCacheChannel = do_QueryInterface(mChannel); - mUploadChannel = do_QueryInterface(mChannel); - -+ rv = UpdateLoadInfoResultPrincipalURI(); -+ NS_ENSURE_SUCCESS(rv, rv); -+ - nsCOMPtr isc = do_QueryInterface(mChannel); - MOZ_ASSERT(isc); - isc->SetBaseURI(aBaseURI); - return NS_OK; - } - -+nsresult -+nsViewSourceChannel::UpdateLoadInfoResultPrincipalURI() -+{ -+ nsresult rv; -+ -+ MOZ_ASSERT(mChannel); -+ -+ nsCOMPtr channelLoadInfo = mChannel->GetLoadInfo(); -+ if (!channelLoadInfo) { -+ return NS_OK; -+ } -+ -+ nsCOMPtr channelResultPrincipalURI; -+ rv = channelLoadInfo->GetResultPrincipalURI(getter_AddRefs(channelResultPrincipalURI)); -+ if (NS_FAILED(rv)) { -+ return rv; -+ } -+ -+ if (!channelResultPrincipalURI) { -+ mChannel->GetOriginalURI(getter_AddRefs(channelResultPrincipalURI)); -+ return NS_OK; -+ } -+ -+ if (!channelResultPrincipalURI) { -+ return NS_ERROR_UNEXPECTED; -+ } -+ -+ bool alreadyViewSource; -+ if (NS_SUCCEEDED(channelResultPrincipalURI->SchemeIs("view-source", &alreadyViewSource)) && -+ alreadyViewSource) { -+ return NS_OK; -+ } -+ -+ nsCOMPtr updatedResultPrincipalURI; -+ rv = BuildViewSourceURI(channelResultPrincipalURI, -+ getter_AddRefs(updatedResultPrincipalURI)); -+ if (NS_FAILED(rv)) { -+ return rv; -+ } -+ -+ rv = channelLoadInfo->SetResultPrincipalURI(updatedResultPrincipalURI); -+ if (NS_FAILED(rv)) { -+ return rv; -+ } -+ -+ return NS_OK; -+} -+ -+nsresult -+nsViewSourceChannel::BuildViewSourceURI(nsIURI * aURI, nsIURI ** aResult) -+{ -+ nsresult rv; -+ -+ // protect ourselves against broken channel implementations -+ if (!aURI) { -+ NS_ERROR("no URI to build view-source uri!"); -+ return NS_ERROR_UNEXPECTED; -+ } -+ -+ nsAutoCString spec; -+ rv = aURI->GetSpec(spec); -+ if (NS_FAILED(rv)) { -+ return rv; -+ } -+ -+ return NS_NewURI(aResult, -+ /* XXX Gross hack -- NS_NewURI goes into an infinite loop on -+ non-flat specs. See bug 136980 */ -+ nsAutoCString(NS_LITERAL_CSTRING("view-source:") + spec), -+ nullptr); -+} -+ - //////////////////////////////////////////////////////////////////////////////// - // nsIRequest methods: - -@@ -229,24 +304,11 @@ nsViewSourceChannel::GetURI(nsIURI* *aURI) - - nsCOMPtr uri; - nsresult rv = mChannel->GetURI(getter_AddRefs(uri)); -- if (NS_FAILED(rv)) -- return rv; -- -- // protect ourselves against broken channel implementations -- if (!uri) { -- NS_ERROR("inner channel returned NS_OK and a null URI"); -- return NS_ERROR_UNEXPECTED; -- } -- -- nsAutoCString spec; -- rv = uri->GetSpec(spec); - if (NS_FAILED(rv)) { - return rv; - } - -- /* XXX Gross hack -- NS_NewURI goes into an infinite loop on -- non-flat specs. See bug 136980 */ -- return NS_NewURI(aURI, nsAutoCString(NS_LITERAL_CSTRING("view-source:")+spec), nullptr); -+ return BuildViewSourceURI(uri, aURI); - } - - NS_IMETHODIMP -@@ -671,6 +733,11 @@ nsViewSourceChannel::OnStartRequest(nsIRequest *aRequest, nsISupports *aContext) - mCacheInfoChannel = do_QueryInterface(mChannel); - mUploadChannel = do_QueryInterface(aRequest); - -+ nsresult rv = UpdateLoadInfoResultPrincipalURI(); -+ if (NS_FAILED(rv)) { -+ Cancel(rv); -+ } -+ - return mListener->OnStartRequest(static_cast - (this), - aContext); -diff --git netwerk/protocol/viewsource/nsViewSourceChannel.h netwerk/protocol/viewsource/nsViewSourceChannel.h -index 002739b361f7..1970c01588e3 100644 ---- netwerk/protocol/viewsource/nsViewSourceChannel.h -+++ netwerk/protocol/viewsource/nsViewSourceChannel.h -@@ -55,9 +55,19 @@ public: - const nsAString &aSrcdoc, - nsILoadInfo* aLoadInfo); - -+ // Updates or sets the result principal URI of the underlying channel's -+ // loadinfo to be prefixed with the "view-source:" schema as: -+ // -+ // mChannel.loadInfo.resultPrincipalURI = "view-source:" + -+ // (mChannel.loadInfo.resultPrincipalURI | mChannel.orignalURI); -+ nsresult UpdateLoadInfoResultPrincipalURI(); -+ - protected: - ~nsViewSourceChannel() {} - -+ // Clones aURI and prefixes it with "view-source:" schema, -+ nsresult BuildViewSourceURI(nsIURI* aURI, nsIURI** aResult); -+ - nsCOMPtr mChannel; - nsCOMPtr mHttpChannel; - nsCOMPtr mHttpChannelInternal; diff --git a/www/waterfox/files/patch-bug1404057 b/www/waterfox/files/patch-bug1404057 deleted file mode 100644 index e82bafd8ba75..000000000000 --- a/www/waterfox/files/patch-bug1404057 +++ /dev/null @@ -1,139 +0,0 @@ -commit 52f5824f49d0 -Author: Manish Goregaokar -Date: Wed Oct 4 20:57:24 2017 -0500 - - Bug 1404057 - stylo: `all` shorthand should not apply to internal properties. r=xidorn, a=ritu - - Source-Repo: https://github.com/servo/servo - Source-Revision: 43686a8738513db728eebcc535b5ac6e1a2f17f7 ---- - servo/components/style/properties/properties.mako.rs | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git servo/components/style/properties/properties.mako.rs servo/components/style/properties/properties.mako.rs -index 13dd6212fe1a..269bf0dbbbb5 100644 ---- servo/components/style/properties/properties.mako.rs -+++ servo/components/style/properties/properties.mako.rs -@@ -217,7 +217,9 @@ pub mod shorthands { - // We don't defined the 'all' shorthand using the regular helpers:shorthand - // mechanism, since it causes some very large types to be generated. - <% data.declare_shorthand("all", -- [p.name for p in data.longhands if p.name not in ['direction', 'unicode-bidi']], -+ [p.name for p in data.longhands -+ if p.name not in ['direction', 'unicode-bidi'] -+ and not p.internal], - spec="https://drafts.csswg.org/css-cascade-3/#all-shorthand") %> - } - -commit ff25959d0893 -Author: Manish Goregaokar -Date: Mon Oct 2 18:53:19 2017 -0700 - - Bug 1404057 - stylo: Add crashtest for text-zoom being reenabled within svg:text. r=xidorn, a=ritu - - MozReview-Commit-ID: 3dIDW8Tz6Mj ---- - layout/style/crashtests/1404057.html | 6 ++++++ - layout/style/crashtests/crashtests.list | 1 + - 2 files changed, 7 insertions(+) - -diff --git layout/style/crashtests/1404057.html layout/style/crashtests/1404057.html -new file mode 100644 -index 000000000000..4c4a33ce495d ---- /dev/null -+++ layout/style/crashtests/1404057.html -@@ -0,0 +1,6 @@ -+ -+ Testcase, bug 143862 -+ -+aaa -+ -+ -\ No newline at end of file -diff --git layout/style/crashtests/crashtests.list layout/style/crashtests/crashtests.list -index 5eaba6935ee2..70e240d14e2f 100644 ---- layout/style/crashtests/crashtests.list -+++ layout/style/crashtests/crashtests.list -@@ -205,3 +205,4 @@ asserts-if(stylo,1) load 1404324-1.html # bug 1405605 - load 1387499.html - load 1391577.html - load 1398581.html -+load 1404057.html -commit c883f59323fd -Author: Manish Goregaokar -Date: Tue Oct 3 08:30:34 2017 -0700 - - Bug 1404057 - stylo: Add reftest for ensuring lang is not reset by the `all` shorthand. r=xidorn, a=ritu - - MozReview-Commit-ID: HgjJDwUM6Ju ---- - layout/reftests/bugs/1404057-noref.html | 12 ++++++++++++ - layout/reftests/bugs/1404057-ref.html | 12 ++++++++++++ - layout/reftests/bugs/1404057.html | 12 ++++++++++++ - layout/reftests/bugs/reftest.list | 2 ++ - 4 files changed, 38 insertions(+) - -diff --git layout/reftests/bugs/1404057-noref.html layout/reftests/bugs/1404057-noref.html -new file mode 100644 -index 000000000000..dc734b6b1f5e ---- /dev/null -+++ layout/reftests/bugs/1404057-noref.html -@@ -0,0 +1,12 @@ -+ -+ -+ -+ -+
-+
-+
-+ -diff --git layout/reftests/bugs/1404057-ref.html layout/reftests/bugs/1404057-ref.html -new file mode 100644 -index 000000000000..3c06958591be ---- /dev/null -+++ layout/reftests/bugs/1404057-ref.html -@@ -0,0 +1,12 @@ -+ -+ -+ -+ -+
-+
-+
-+ -diff --git layout/reftests/bugs/1404057.html layout/reftests/bugs/1404057.html -new file mode 100644 -index 000000000000..3a9e3af26a25 ---- /dev/null -+++ layout/reftests/bugs/1404057.html -@@ -0,0 +1,12 @@ -+ -+ -+ -+ -+
-+
-+
-+ -diff --git layout/reftests/bugs/reftest.list layout/reftests/bugs/reftest.list -index 679672b8c24b..52f8cb915cee 100644 ---- layout/reftests/bugs/reftest.list -+++ layout/reftests/bugs/reftest.list -@@ -2037,3 +2037,5 @@ needs-focus != 1377447-1.html 1377447-2.html - == 1380224-1.html 1380224-1-ref.html - == 1384065.html 1384065-ref.html - == 1384275-1.html 1384275-1-ref.html -+== 1404057.html 1404057-ref.html -+!= 1404057.html 1404057-noref.html diff --git a/www/waterfox/files/patch-bug1404180 b/www/waterfox/files/patch-bug1404180 deleted file mode 100644 index 87ad2b6c5382..000000000000 --- a/www/waterfox/files/patch-bug1404180 +++ /dev/null @@ -1,68 +0,0 @@ -commit 5d2f7f4ae8d8 -Author: Cameron McCormack -Date: Mon Oct 2 13:10:18 2017 +0800 - - Bug 1404180 - Don't allow associating form elements by ID to
s across anonymous subtree boundaries. r=smaug, a=ritu - - MozReview-Commit-ID: KRJjrkL4FgZ - - --HG-- - extra : source : 123004932443033cc9490e80d52c827d60079c65 ---- - dom/html/nsGenericHTMLElement.cpp | 4 +++- - layout/style/crashtests/1404180-1.html | 22 ++++++++++++++++++++++ - layout/style/crashtests/crashtests.list | 1 + - 3 files changed, 26 insertions(+), 1 deletion(-) - -diff --git dom/html/nsGenericHTMLElement.cpp dom/html/nsGenericHTMLElement.cpp -index eda85c9eebaf..54041d7bf071 100644 ---- dom/html/nsGenericHTMLElement.cpp -+++ dom/html/nsGenericHTMLElement.cpp -@@ -2319,7 +2319,9 @@ nsGenericHTMLFormElement::UpdateFormOwner(bool aBindToTree, - "element should be equals to the current element " - "associated with the id in @form!"); - -- if (element && element->IsHTMLElement(nsGkAtoms::form)) { -+ if (element && -+ element->IsHTMLElement(nsGkAtoms::form) && -+ nsContentUtils::IsInSameAnonymousTree(this, element)) { - SetForm(static_cast(element), aBindToTree); - } - } -diff --git layout/style/crashtests/1404180-1.html layout/style/crashtests/1404180-1.html -new file mode 100644 -index 000000000000..079d6800f55f ---- /dev/null -+++ layout/style/crashtests/1404180-1.html -@@ -0,0 +1,22 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ to a non- -- mCommonAncestors.Clear(); -- nsContentUtils::GetAncestors(p->GetParentNode(), mCommonAncestors); - mDisableContextSerialize = false; -- rv = SerializeRangeContextEnd(mCommonAncestors, output); -+ rv = SerializeRangeContextEnd(output); - NS_ENSURE_SUCCESS(rv, rv); - prevNode = nullptr; - } -@@ -1134,10 +1132,8 @@ nsDocumentEncoder::EncodeToStringWithMaxLength(uint32_t aMaxLength, - nsCOMPtr p = do_QueryInterface(prevNode); - rv = SerializeNodeEnd(p, output); - NS_ENSURE_SUCCESS(rv, rv); -- mCommonAncestors.Clear(); -- nsContentUtils::GetAncestors(p->GetParentNode(), mCommonAncestors); - mDisableContextSerialize = false; -- rv = SerializeRangeContextEnd(mCommonAncestors, output); -+ rv = SerializeRangeContextEnd(output); - NS_ENSURE_SUCCESS(rv, rv); - } - -@@ -1196,6 +1192,10 @@ nsDocumentEncoder::EncodeToStringWithMaxLength(uint32_t aMaxLength, - NS_IMETHODIMP - nsDocumentEncoder::EncodeToStream(nsIOutputStream* aStream) - { -+ MOZ_ASSERT(mRangeContexts.IsEmpty(), "Re-entrant call to nsDocumentEncoder."); -+ auto rangeContextGuard = MakeScopeExit([&] { -+ mRangeContexts.Clear(); -+ }); - nsresult rv = NS_OK; - - if (!mDocument) -diff --git dom/base/nsPlainTextSerializer.cpp dom/base/nsPlainTextSerializer.cpp -index 189469f73bb6..d7ddb0274be5 100644 ---- dom/base/nsPlainTextSerializer.cpp -+++ dom/base/nsPlainTextSerializer.cpp -@@ -388,6 +388,7 @@ nsPlainTextSerializer::ScanElementForPreformat(Element* aElement) - NS_IMETHODIMP - nsPlainTextSerializer::ForgetElementForPreformat(Element* aElement) - { -+ MOZ_RELEASE_ASSERT(!mPreformatStack.empty(), "Tried to pop without previous push."); - mPreformatStack.pop(); - return NS_OK; - } diff --git a/www/waterfox/files/patch-bug1410134 b/www/waterfox/files/patch-bug1410134 deleted file mode 100644 index 7a30e8a20fe8..000000000000 --- a/www/waterfox/files/patch-bug1410134 +++ /dev/null @@ -1,52 +0,0 @@ -commit 2d5001acfa08 -Author: Tim Huang -Date: Tue Nov 28 14:56:55 2017 -0500 - - Bug 1410134 - Fix the remove-while-iterating for RemoveCookiesWithOriginAttributes. r=jdm, a=gchang - - MozReview-Commit-ID: u56N4084lL - - --HG-- - extra : source : ffab26e34d92c1fc2e5103d2bad3625e180963bb ---- - netwerk/cookie/nsCookieService.cpp | 24 ++++++++++-------------- - 1 file changed, 10 insertions(+), 14 deletions(-) - -diff --git netwerk/cookie/nsCookieService.cpp netwerk/cookie/nsCookieService.cpp -index 7d939da101e2..0692b7088751 100644 ---- netwerk/cookie/nsCookieService.cpp -+++ netwerk/cookie/nsCookieService.cpp -@@ -4899,23 +4899,19 @@ nsCookieService::RemoveCookiesWithOriginAttributes( - } - - // Pattern matches. Delete all cookies within this nsCookieEntry. -- const nsCookieEntry::ArrayType& cookies = entry->GetCookies(); -+ uint32_t cookiesCount = entry->GetCookies().Length(); - -- while (!cookies.IsEmpty()) { -- nsCookie *cookie = cookies.LastElement(); -- -- nsAutoCString host; -- cookie->GetHost(host); -- -- nsAutoCString name; -- cookie->GetName(name); -- -- nsAutoCString path; -- cookie->GetPath(path); -+ for (nsCookieEntry::IndexType i = 0 ; i < cookiesCount; ++i) { -+ // Remove the first cookie from the list. -+ nsListIter iter(entry, 0); -+ RefPtr cookie = iter.Cookie(); - - // Remove the cookie. -- nsresult rv = Remove(host, entry->mOriginAttributes, name, path, false); -- NS_ENSURE_SUCCESS(rv, rv); -+ RemoveCookieFromList(iter); -+ -+ if (cookie) { -+ NotifyChanged(cookie, u"deleted"); -+ } - } - } - DebugOnly rv = transaction.Commit(); diff --git a/www/waterfox/files/patch-bug1410146 b/www/waterfox/files/patch-bug1410146 deleted file mode 100644 index 258525f9bc9c..000000000000 --- a/www/waterfox/files/patch-bug1410146 +++ /dev/null @@ -1,27 +0,0 @@ -commit a8fff8ff6df2 -Author: Dragana Damjanovic dd.mozilla@gmail.com -Date: Tue Oct 24 14:23:00 2017 -0400 - - Bug 1410146 - Fix UnknownDecoder. r=mayhemer, a=ritu - - --HG-- - extra : source : 8e55fa4da0cb3213d24aca8326792f6346594ed6 ---- - netwerk/streamconv/converters/nsUnknownDecoder.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git netwerk/streamconv/converters/nsUnknownDecoder.cpp netwerk/streamconv/converters/nsUnknownDecoder.cpp -index f3249942580c..ea69d4eb63a3 100644 ---- netwerk/streamconv/converters/nsUnknownDecoder.cpp -+++ netwerk/streamconv/converters/nsUnknownDecoder.cpp -@@ -75,6 +75,10 @@ nsUnknownDecoder::ConvertedStreamListener:: - { - uint32_t read; - nsAutoCString decodedData; -+ { -+ MutexAutoLock lock(mDecoder->mMutex); -+ decodedData = mDecoder->mDecodedData; -+ } - nsresult rv = stream->ReadSegments(AppendDataToString, &decodedData, count, - &read); - if (NS_FAILED(rv)) { diff --git a/www/waterfox/files/patch-bug1410420 b/www/waterfox/files/patch-bug1410420 deleted file mode 100644 index 0d7ea1d89147..000000000000 --- a/www/waterfox/files/patch-bug1410420 +++ /dev/null @@ -1,140 +0,0 @@ -commit 7bc1ff4cdf6e -Author: Jan Varga -Date: Mon Oct 30 07:13:40 2017 +0100 - - Bug 1410420 - Clear database actor's strong reference to IDBDatabase when opening of a database fails. r=asuth, a=ritu - - --HG-- - extra : source : d7a53e1454addc0d6bdda84e6c5125c88a14d5cc ---- - dom/indexedDB/ActorsChild.cpp | 25 +++++++++++++++++++++++++ - dom/indexedDB/ActorsChild.h | 17 +++++++++++++++++ - 2 files changed, 42 insertions(+) - -diff --git dom/indexedDB/ActorsChild.cpp dom/indexedDB/ActorsChild.cpp -index a720e9520e6e..0074956761e0 100644 ---- dom/indexedDB/ActorsChild.cpp -+++ dom/indexedDB/ActorsChild.cpp -@@ -1755,6 +1755,7 @@ BackgroundFactoryRequestChild::BackgroundFactoryRequestChild( - uint64_t aRequestedVersion) - : BackgroundRequestChildBase(aOpenRequest) - , mFactory(aFactory) -+ , mDatabaseActor(nullptr) - , mRequestedVersion(aRequestedVersion) - , mIsDeleteOp(aIsDeleteOp) - { -@@ -1779,6 +1780,15 @@ BackgroundFactoryRequestChild::GetOpenDBRequest() const - return static_cast(mRequest.get()); - } - -+void -+BackgroundFactoryRequestChild::SetDatabaseActor(BackgroundDatabaseChild* aActor) -+{ -+ AssertIsOnOwningThread(); -+ MOZ_ASSERT(!aActor || !mDatabaseActor); -+ -+ mDatabaseActor = aActor; -+} -+ - bool - BackgroundFactoryRequestChild::HandleResponse(nsresult aResponse) - { -@@ -1790,6 +1800,11 @@ BackgroundFactoryRequestChild::HandleResponse(nsresult aResponse) - - DispatchErrorEvent(mRequest, aResponse); - -+ if (mDatabaseActor) { -+ mDatabaseActor->ReleaseDOMObject(); -+ MOZ_ASSERT(!mDatabaseActor); -+ } -+ - return true; - } - -@@ -1808,6 +1823,7 @@ BackgroundFactoryRequestChild::HandleResponse( - IDBDatabase* database = databaseActor->GetDOMObject(); - if (!database) { - databaseActor->EnsureDOMObject(); -+ MOZ_ASSERT(mDatabaseActor); - - database = databaseActor->GetDOMObject(); - MOZ_ASSERT(database); -@@ -1815,6 +1831,8 @@ BackgroundFactoryRequestChild::HandleResponse( - MOZ_ASSERT(!database->IsClosed()); - } - -+ MOZ_ASSERT(mDatabaseActor == databaseActor); -+ - if (database->IsClosed()) { - // If the database was closed already, which is only possible if we fired an - // "upgradeneeded" event, then we shouldn't fire a "success" event here. -@@ -1827,6 +1845,7 @@ BackgroundFactoryRequestChild::HandleResponse( - } - - databaseActor->ReleaseDOMObject(); -+ MOZ_ASSERT(!mDatabaseActor); - - return true; - } -@@ -1847,6 +1866,8 @@ BackgroundFactoryRequestChild::HandleResponse( - - DispatchSuccessEvent(&helper, successEvent); - -+ MOZ_ASSERT(!mDatabaseActor); -+ - return true; - } - -@@ -2095,6 +2116,8 @@ BackgroundDatabaseChild::EnsureDOMObject() - - mDatabase = mTemporaryStrongDatabase; - mSpec.forget(); -+ -+ mOpenRequestActor->SetDatabaseActor(this); - } - - void -@@ -2106,6 +2129,8 @@ BackgroundDatabaseChild::ReleaseDOMObject() - MOZ_ASSERT(mOpenRequestActor); - MOZ_ASSERT(mDatabase == mTemporaryStrongDatabase); - -+ mOpenRequestActor->SetDatabaseActor(nullptr); -+ - mOpenRequestActor = nullptr; - - // This may be the final reference to the IDBDatabase object so we may end up -diff --git dom/indexedDB/ActorsChild.h dom/indexedDB/ActorsChild.h -index 866a405fb4e2..d82a188b8253 100644 ---- dom/indexedDB/ActorsChild.h -+++ dom/indexedDB/ActorsChild.h -@@ -253,6 +253,20 @@ class BackgroundFactoryRequestChild final - friend class PermissionRequestParent; - - RefPtr mFactory; -+ -+ // Normally when opening of a database is successful, we receive a database -+ // actor in request response, so we can use it to call ReleaseDOMObject() -+ // which clears temporary strong reference to IDBDatabase. -+ // However, when there's an error, we don't receive a database actor and -+ // IDBRequest::mTransaction is already cleared (must be). So the only way how -+ // to call ReleaseDOMObject() is to have a back-reference to database actor. -+ // This creates a weak ref cycle between -+ // BackgroundFactoryRequestChild (using mDatabaseActor member) and -+ // BackgroundDatabaseChild actor (using mOpenRequestActor member). -+ // mDatabaseActor is set in EnsureDOMObject() and cleared in -+ // ReleaseDOMObject(). -+ BackgroundDatabaseChild* mDatabaseActor; -+ - const uint64_t mRequestedVersion; - const bool mIsDeleteOp; - -@@ -270,6 +284,9 @@ private: - // Only destroyed by BackgroundFactoryChild. - ~BackgroundFactoryRequestChild(); - -+ void -+ SetDatabaseActor(BackgroundDatabaseChild* aActor); -+ - bool - HandleResponse(nsresult aResponse); - diff --git a/www/waterfox/files/patch-bug1410457 b/www/waterfox/files/patch-bug1410457 deleted file mode 100644 index a9d6511bfc03..000000000000 --- a/www/waterfox/files/patch-bug1410457 +++ /dev/null @@ -1,117 +0,0 @@ -commit 1b99cb80da51 -Author: Marco Bonardo -Date: Fri Oct 20 17:14:17 2017 +0200 - - Bug 1410457 - Places.sqlite may be marked as corrupt if schema migration mixes up sync and async execution. r=Paolo, a=ritu - - MozReview-Commit-ID: 7O18MLdHU08 - - --HG-- - extra : source : c7cab42203dfce68c8c4cd152055a22b4fdbc402 - extra : histedit_source : dbec7034f68805d1597e4577534de934be04af59 ---- - toolkit/components/places/Database.cpp | 45 +++++++++++++++++++++++++++++----- - toolkit/components/places/Database.h | 3 +++ - 2 files changed, 42 insertions(+), 6 deletions(-) - -diff --git toolkit/components/places/Database.cpp toolkit/components/places/Database.cpp -index 85e365ff3d9e..3ff9e0fa2078 100644 ---- toolkit/components/places/Database.cpp -+++ toolkit/components/places/Database.cpp -@@ -370,6 +370,7 @@ Database::Database() - , mDBPageSize(0) - , mDatabaseStatus(nsINavHistoryService::DATABASE_STATUS_OK) - , mClosed(false) -+ , mShouldConvertIconPayloads(false) - , mClientsShutdown(new ClientsShutdownBlocker()) - , mConnectionShutdown(new ConnectionShutdownBlocker(this)) - , mMaxUrlLength(0) -@@ -588,13 +589,31 @@ Database::EnsureConnection() - bool databaseMigrated = false; - rv = SetupDatabaseConnection(storage); - if (NS_SUCCEEDED(rv)) { -- // Failing to initialize the schema always indicates a corruption. -- if (NS_FAILED(InitSchema(&databaseMigrated))) { -- rv = NS_ERROR_FILE_CORRUPTED; -+ // Failing to initialize the schema may indicate a corruption. -+ rv = InitSchema(&databaseMigrated); -+ if (NS_FAILED(rv)) { -+ if (rv == NS_ERROR_STORAGE_BUSY || -+ rv == NS_ERROR_FILE_IS_LOCKED || -+ rv == NS_ERROR_FILE_NO_DEVICE_SPACE || -+ rv == NS_ERROR_OUT_OF_MEMORY) { -+ // The database is not corrupt, though some migration step failed. -+ // This may be caused by concurrent use of sync and async Storage APIs -+ // or by a system issue. -+ // The best we can do is trying again. If it should still fail, Places -+ // won't work properly and will be handled as LOCKED. -+ rv = InitSchema(&databaseMigrated); -+ if (NS_FAILED(rv)) { -+ rv = NS_ERROR_FILE_IS_LOCKED; -+ } -+ } else { -+ rv = NS_ERROR_FILE_CORRUPTED; -+ } - } - } - if (NS_WARN_IF(NS_FAILED(rv))) { -- mDatabaseStatus = nsINavHistoryService::DATABASE_STATUS_CORRUPT; -+ if (rv != NS_ERROR_FILE_IS_LOCKED) { -+ mDatabaseStatus = nsINavHistoryService::DATABASE_STATUS_CORRUPT; -+ } - // Some errors may not indicate a database corruption, for those cases we - // just bail out without throwing away a possibly valid places.sqlite. - if (rv == NS_ERROR_FILE_CORRUPTED) { -@@ -961,6 +980,14 @@ Database::InitSchema(bool* aDatabaseMigrated) - return NS_ERROR_FILE_CORRUPTED; - } - -+ auto guard = MakeScopeExit([&]() { -+ // This runs at the end of the migration, regardless of its success. -+ if (mShouldConvertIconPayloads) { -+ mShouldConvertIconPayloads = false; -+ nsFaviconService::ConvertUnsupportedPayloads(mMainConn); -+ } -+ }); -+ - // Firefox 4 uses schema version 11. - - // Firefox 8 uses schema version 12. -@@ -1122,6 +1149,11 @@ Database::InitSchema(bool* aDatabaseMigrated) - // Firefox 57 uses schema version 39. - - // Schema Upgrades must add migration code here. -+ // >>> IMPORTANT! <<< -+ // NEVER MIX UP SYNC AND ASYNC EXECUTION IN MIGRATORS, YOU MAY LOCK THE -+ // CONNECTION AND CAUSE FURTHER STEPS TO FAIL. -+ // In case, set a bool and do the async work in the ScopeExit guard just -+ // before the migration steps. - - rv = UpdateBookmarkRootTitles(); - // We don't want a broken localization to cause us to think -@@ -2304,8 +2336,9 @@ Database::MigrateV37Up() { - )); - NS_ENSURE_SUCCESS(rv, rv); - -- // Start the async conversion -- nsFaviconService::ConvertUnsupportedPayloads(mMainConn); -+ // The async favicons conversion will happen at the end of the normal schema -+ // migration. -+ mShouldConvertIconPayloads = true; - - return NS_OK; - } -diff --git toolkit/components/places/Database.h toolkit/components/places/Database.h -index 9000fb269dc2..6213678b3e47 100644 ---- toolkit/components/places/Database.h -+++ toolkit/components/places/Database.h -@@ -333,6 +333,9 @@ private: - int32_t mDBPageSize; - uint16_t mDatabaseStatus; - bool mClosed; -+ // Used to track whether icon payloads should be converted at the end of -+ // schema migration. -+ bool mShouldConvertIconPayloads; - - /** - * Phases for shutting down the Database. diff --git a/www/waterfox/files/patch-bug1410634 b/www/waterfox/files/patch-bug1410634 deleted file mode 100644 index 0fdc6cbe00ca..000000000000 --- a/www/waterfox/files/patch-bug1410634 +++ /dev/null @@ -1,145 +0,0 @@ -commit a34cf3c8ad18 -Author: Ben Kelly -Date: Tue Oct 24 09:24:53 2017 -0400 - - Bug 1410634 - Part 1: Call channel IsFromCache() during OnStartRequest() to determine if update result came from http cache or network. r=tt, a=ritu - - --HG-- - extra : source : 087e11c956e368c41e91bdc5d689d5e94f3ef7ef ---- - dom/workers/ServiceWorkerScriptCache.cpp | 22 ++++++++++++---------- - 1 file changed, 12 insertions(+), 10 deletions(-) - -diff --git dom/workers/ServiceWorkerScriptCache.cpp dom/workers/ServiceWorkerScriptCache.cpp -index a065a6fafbf8..f30bca95229c 100644 ---- dom/workers/ServiceWorkerScriptCache.cpp -+++ dom/workers/ServiceWorkerScriptCache.cpp -@@ -100,12 +100,13 @@ public: - bool aIsMainScript) - : mManager(aManager) - , mRegistration(aRegistration) -- , mIsMainScript(aIsMainScript) - , mInternalHeaders(new InternalHeaders()) - , mLoadFlags(nsIChannel::LOAD_BYPASS_SERVICE_WORKER) - , mState(WaitingForInitialization) - , mNetworkResult(NS_OK) - , mCacheResult(NS_OK) -+ , mIsMainScript(aIsMainScript) -+ , mIsFromCache(false) - { - MOZ_ASSERT(aManager); - AssertIsOnMainThread(); -@@ -180,8 +181,6 @@ private: - RefPtr mCC; - RefPtr mRegistration; - -- bool mIsMainScript; -- - nsCOMPtr mChannel; - nsString mBuffer; - nsString mURL; -@@ -202,6 +201,9 @@ private: - - nsresult mNetworkResult; - nsresult mCacheResult; -+ -+ const bool mIsMainScript; -+ bool mIsFromCache; - }; - - NS_IMPL_ISUPPORTS(CompareNetwork, nsIStreamLoaderObserver, -@@ -863,6 +865,12 @@ CompareNetwork::OnStartRequest(nsIRequest* aRequest, nsISupports* aContext) - } - - mInternalHeaders->FillResponseHeaders(mChannel); -+ -+ nsCOMPtr cacheChannel(do_QueryInterface(mChannel)); -+ if (cacheChannel) { -+ cacheChannel->IsFromCache(&mIsFromCache); -+ } -+ - return NS_OK; - } - -@@ -959,15 +967,9 @@ CompareNetwork::OnStreamComplete(nsIStreamLoader* aLoader, nsISupports* aContext - NS_LITERAL_CSTRING("Service-Worker-Allowed"), - mMaxScope); - -- bool isFromCache = false; -- nsCOMPtr cacheChannel(do_QueryInterface(httpChannel)); -- if (cacheChannel) { -- cacheChannel->IsFromCache(&isFromCache); -- } -- - // [9.2 Update]4.13, If response's cache state is not "local", - // set registration's last update check time to the current time -- if (!isFromCache) { -+ if (!mIsFromCache) { - mRegistration->RefreshLastUpdateCheckTime(); - } - - -commit 5aebe3f6b13b -Author: Ben Kelly -Date: Tue Oct 24 09:24:53 2017 -0400 - - Bug 1410634 - Part 2: Verify ServiceWorkerInfo.lastUpdateTime is not changed when reading from http cache. r=tt, a=ritu - - --HG-- - extra : source : 1abb70007b4c50a588b6a344879fd9efc3ef9ca5 ---- - .../test/serviceworkers/serviceworkerinfo_iframe.html | 3 ++- - .../test_devtools_track_serviceworker_time.html | 12 ++++++++++++ - 2 files changed, 14 insertions(+), 1 deletion(-) - -diff --git dom/workers/test/serviceworkers/serviceworkerinfo_iframe.html dom/workers/test/serviceworkers/serviceworkerinfo_iframe.html -index a0a2de76030e..16a175836981 100644 ---- dom/workers/test/serviceworkers/serviceworkerinfo_iframe.html -+++ dom/workers/test/serviceworkers/serviceworkerinfo_iframe.html -@@ -7,7 +7,8 @@ - if (event.data !== "register") { - return; - } -- var promise = navigator.serviceWorker.register("worker.js"); -+ var promise = navigator.serviceWorker.register("worker.js", -+ { updateViaCache: 'all' }); - window.onmessage = function (event) { - if (event.data !== "unregister") { - return; -diff --git dom/workers/test/serviceworkers/test_devtools_track_serviceworker_time.html dom/workers/test/serviceworkers/test_devtools_track_serviceworker_time.html -index 4b58d659f565..6b95d6b34fe1 100644 ---- dom/workers/test/serviceworkers/test_devtools_track_serviceworker_time.html -+++ dom/workers/test/serviceworkers/test_devtools_track_serviceworker_time.html -@@ -53,6 +53,8 @@ let expectedResults = [ - state: State.ACTIVATED, installedTimeRecorded: true, - activatedTimeRecorded: true, redundantTimeRecorded: false - }, -+ -+ // On unregister - { - state: State.REDUNDANT, installedTimeRecorded: true, - activatedTimeRecorded: true, redundantTimeRecorded: true -@@ -170,6 +172,15 @@ function testServiceWorkerInfo() { - return promise; - } - -+async function testHttpCacheUpdateTime() { -+ let iframe = document.querySelector("iframe"); -+ let reg = await iframe.contentWindow.navigator.serviceWorker.getRegistration(); -+ let lastUpdateTime = registrationInfo.lastUpdateTime; -+ await reg.update(); -+ is(lastUpdateTime, registrationInfo.lastUpdateTime, -+ "The update time should not change when SW script is read from http cache."); -+} -+ - function unregister() { - info("Unregister the ServiceWorker"); - -@@ -196,6 +207,7 @@ function runTest() { - return Promise.resolve() - .then(register) - .then(testServiceWorkerInfo) -+ .then(testHttpCacheUpdateTime) - .then(unregister) - .catch(aError => ok(false, "Some test failed with error " + aError)) - .then(cleanAll) diff --git a/www/waterfox/files/patch-bug1410808 b/www/waterfox/files/patch-bug1410808 deleted file mode 100644 index 885dd10db626..000000000000 --- a/www/waterfox/files/patch-bug1410808 +++ /dev/null @@ -1,27 +0,0 @@ -commit 17ccad87f85c -Author: Emilio Cobos Álvarez -Date: Mon Oct 23 17:17:13 2017 +0200 - - Bug 1410808. r=xidorn, a=ritu - - MozReview-Commit-ID: 5uufVVEIw20 - - --HG-- - extra : source : d44c182148c233556f38d1c6dc61ab6098f44e85 ---- - layout/style/ServoKeyframeRule.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git layout/style/ServoKeyframeRule.cpp layout/style/ServoKeyframeRule.cpp -index 4fe9f6440211..1be82c3100c5 100644 ---- layout/style/ServoKeyframeRule.cpp -+++ layout/style/ServoKeyframeRule.cpp -@@ -31,7 +31,7 @@ public: - - NS_IMETHOD GetParentRule(nsIDOMCSSRule** aParent) final - { -- *aParent = mRule; -+ NS_IF_ADDREF(*aParent = mRule); - return NS_OK; - } - diff --git a/www/waterfox/files/patch-bug1411415 b/www/waterfox/files/patch-bug1411415 deleted file mode 100644 index b988d95e11be..000000000000 --- a/www/waterfox/files/patch-bug1411415 +++ /dev/null @@ -1,383 +0,0 @@ -commit 627eb6ae9a72 -Author: Kannan Vijayan -Date: Mon Mar 5 19:27:02 2018 -0500 - - Bug 1411415 - r=bz r=fitzgen ---- - dom/bindings/BindingUtils.cpp | 20 +++++------ - dom/bindings/ErrorResult.h | 2 +- - dom/xslt/xpath/txXPCOMExtensionFunction.cpp | 2 +- - js/public/Value.h | 55 ++++++++++++++++++++++++++--- - js/rust/build.rs | 1 + - js/src/jit/BaselineFrameInfo.h | 4 +-- - js/src/jit/CacheIRCompiler.cpp | 2 +- - js/src/jit/RegisterSets.h | 8 ++--- - js/src/jit/RematerializedFrame.cpp | 14 ++++++-- - js/src/wasm/AsmJS.cpp | 10 +++--- - js/xpconnect/src/XPCWrappedNative.cpp | 7 ++-- - layout/style/ServoBindings.toml | 6 ++-- - xpcom/reflect/xptcall/xptcall.h | 2 +- - 13 files changed, 97 insertions(+), 36 deletions(-) - -diff --git dom/bindings/BindingUtils.cpp dom/bindings/BindingUtils.cpp -index 93069ac4a8b8..ac8c7a2229f3 100644 ---- dom/bindings/BindingUtils.cpp -+++ dom/bindings/BindingUtils.cpp -@@ -287,8 +287,8 @@ TErrorResult::ThrowJSException(JSContext* cx, JS::Handle::SetPendingJSException(JSContext* cx) - mJSException = exception; - // If JS_WrapValue failed, not much we can do about it... No matter - // what, go ahead and unroot mJSException. -- js::RemoveRawValueRoot(cx, &mJSException); -+ js::RemoveRawValueRoot(cx, &mJSException.asValueRef()); - - mResult = NS_OK; - #ifdef DEBUG -@@ -423,8 +423,8 @@ TErrorResult::ClearUnionData() - if (IsJSException()) { - JSContext* cx = dom::danger::GetJSContext(); - MOZ_ASSERT(cx); -- mJSException.setUndefined(); -- js::RemoveRawValueRoot(cx, &mJSException); -+ mJSException.asValueRef().setUndefined(); -+ js::RemoveRawValueRoot(cx, &mJSException.asValueRef()); - #ifdef DEBUG - mUnionState = HasNothing; - #endif // DEBUG -@@ -467,13 +467,13 @@ TErrorResult::operator=(TErrorResult&& aRHS) - } else if (aRHS.IsJSException()) { - JSContext* cx = dom::danger::GetJSContext(); - MOZ_ASSERT(cx); -- mJSException.setUndefined(); -- if (!js::AddRawValueRoot(cx, &mJSException, "TErrorResult::mJSException")) { -+ mJSException.asValueRef().setUndefined(); -+ if (!js::AddRawValueRoot(cx, &mJSException.asValueRef(), "TErrorResult::mJSException")) { - MOZ_CRASH("Could not root mJSException, we're about to OOM"); - } - mJSException = aRHS.mJSException; -- aRHS.mJSException.setUndefined(); -- js::RemoveRawValueRoot(cx, &aRHS.mJSException); -+ aRHS.mJSException.asValueRef().setUndefined(); -+ js::RemoveRawValueRoot(cx, &aRHS.mJSException.asValueRef()); - } else if (aRHS.IsDOMException()) { - mDOMExceptionInfo = aRHS.mDOMExceptionInfo; - aRHS.mDOMExceptionInfo = nullptr; -@@ -525,7 +525,7 @@ TErrorResult::CloneTo(TErrorResult& aRv) const - aRv.mUnionState = HasJSException; - #endif - JSContext* cx = dom::danger::GetJSContext(); -- JS::Rooted exception(cx, mJSException); -+ JS::Rooted exception(cx, mJSException.asValueRef()); - aRv.ThrowJSException(cx, exception); - } - } -diff --git dom/bindings/ErrorResult.h dom/bindings/ErrorResult.h -index 7b38226691bb..a406a2c490a5 100644 ---- dom/bindings/ErrorResult.h -+++ dom/bindings/ErrorResult.h -@@ -507,7 +507,7 @@ private: - // (and deallocated) by SetPendingDOMException. - union { - Message* mMessage; // valid when IsErrorWithMessage() -- JS::Value mJSException; // valid when IsJSException() -+ JS::UninitializedValue mJSException; // valid when IsJSException() - DOMExceptionInfo* mDOMExceptionInfo; // valid when IsDOMException() - }; - -diff --git dom/xslt/xpath/txXPCOMExtensionFunction.cpp dom/xslt/xpath/txXPCOMExtensionFunction.cpp -index e95baa0bbde8..e1387422c303 100644 ---- dom/xslt/xpath/txXPCOMExtensionFunction.cpp -+++ dom/xslt/xpath/txXPCOMExtensionFunction.cpp -@@ -322,7 +322,7 @@ public: - void trace(JSTracer* trc) { - for (uint8_t i = 0; i < mCount; ++i) { - if (mArray[i].type == nsXPTType::T_JSVAL) { -- JS::UnsafeTraceRoot(trc, &mArray[i].val.j, "txParam value"); -+ JS::UnsafeTraceRoot(trc, &mArray[i].val.j.asValueRef(), "txParam value"); - } - } - } -diff --git js/public/Value.h js/public/Value.h -index b7c4e1b8a770..96a1b703bbc1 100644 ---- js/public/Value.h -+++ js/public/Value.h -@@ -137,12 +137,16 @@ static_assert(sizeof(JSValueShiftedTag) == sizeof(uint64_t), - - #define JSVAL_TYPE_TO_TAG(type) ((JSValueTag)(JSVAL_TAG_CLEAR | (type))) - -+#define JSVAL_RAW64_UNDEFINED (uint64_t(JSVAL_TAG_UNDEFINED) << 32) -+ - #define JSVAL_UPPER_EXCL_TAG_OF_PRIMITIVE_SET JSVAL_TAG_OBJECT - #define JSVAL_UPPER_INCL_TAG_OF_NUMBER_SET JSVAL_TAG_INT32 - #define JSVAL_LOWER_INCL_TAG_OF_GCTHING_SET JSVAL_TAG_STRING - - #elif defined(JS_PUNBOX64) - -+#define JSVAL_RAW64_UNDEFINED (uint64_t(JSVAL_TAG_UNDEFINED) << JSVAL_TAG_SHIFT) -+ - #define JSVAL_PAYLOAD_MASK 0x00007FFFFFFFFFFFLL - #define JSVAL_TAG_MASK 0xFFFF800000000000LL - #define JSVAL_TYPE_TO_TAG(type) ((JSValueTag)(JSVAL_TAG_MAX_DOUBLE | (type))) -@@ -814,7 +818,7 @@ class MOZ_NON_PARAM alignas(8) Value - double asDouble; - void* asPtr; - -- layout() = default; -+ layout() : asBits(JSVAL_RAW64_UNDEFINED) {} - explicit constexpr layout(uint64_t bits) : asBits(bits) {} - explicit constexpr layout(double d) : asDouble(d) {} - } data; -@@ -840,7 +844,7 @@ class MOZ_NON_PARAM alignas(8) Value - size_t asWord; - uintptr_t asUIntPtr; - -- layout() = default; -+ layout() : asBits(JSVAL_RAW64_UNDEFINED) {} - explicit constexpr layout(uint64_t bits) : asBits(bits) {} - explicit constexpr layout(double d) : asDouble(d) {} - } data; -@@ -868,7 +872,7 @@ class MOZ_NON_PARAM alignas(8) Value - double asDouble; - void* asPtr; - -- layout() = default; -+ layout() : asBits(JSVAL_RAW64_UNDEFINED) {} - explicit constexpr layout(uint64_t bits) : asBits(bits) {} - explicit constexpr layout(double d) : asDouble(d) {} - } data; -@@ -892,7 +896,7 @@ class MOZ_NON_PARAM alignas(8) Value - size_t asWord; - uintptr_t asUIntPtr; - -- layout() = default; -+ layout() : asBits(JSVAL_RAW64_UNDEFINED) {} - explicit constexpr layout(uint64_t bits) : asBits(bits) {} - explicit constexpr layout(double d) : asDouble(d) {} - } data; -@@ -945,8 +949,51 @@ class MOZ_NON_PARAM alignas(8) Value - } - } JS_HAZ_GC_POINTER; - -+/** -+ * This is a null-constructible structure that can convert to and from -+ * a Value, allowing UninitializedValue to be stored in unions. -+ */ -+struct MOZ_NON_PARAM alignas(8) UninitializedValue -+{ -+ private: -+ uint64_t bits; -+ -+ public: -+ UninitializedValue() = default; -+ UninitializedValue(const UninitializedValue&) = default; -+ MOZ_IMPLICIT UninitializedValue(const Value& val) : bits(val.asRawBits()) {} -+ -+ inline uint64_t asRawBits() const { -+ return bits; -+ } -+ -+ inline Value& asValueRef() { -+ return *reinterpret_cast(this); -+ } -+ inline const Value& asValueRef() const { -+ return *reinterpret_cast(this); -+ } -+ -+ inline operator Value&() { -+ return asValueRef(); -+ } -+ inline operator Value const&() const { -+ return asValueRef(); -+ } -+ inline operator Value() const { -+ return asValueRef(); -+ } -+ -+ inline void operator=(Value const& other) { -+ asValueRef() = other; -+ } -+}; -+ - static_assert(sizeof(Value) == 8, "Value size must leave three tag bits, be a binary power, and is ubiquitously depended upon everywhere"); - -+static_assert(sizeof(UninitializedValue) == sizeof(Value), "Value and UninitializedValue must be the same size"); -+static_assert(alignof(UninitializedValue) == alignof(Value), "Value and UninitializedValue must have same alignment"); -+ - inline bool - IsOptimizedPlaceholderMagicValue(const Value& v) - { -diff --git js/src/jit/BaselineFrameInfo.h js/src/jit/BaselineFrameInfo.h -index 13bf0358d944..1691270acf17 100644 ---- js/src/jit/BaselineFrameInfo.h -+++ js/src/jit/BaselineFrameInfo.h -@@ -67,7 +67,7 @@ class StackValue - - union { - struct { -- Value v; -+ JS::UninitializedValue v; - } constant; - struct { - mozilla::AlignedStorage2 reg; -@@ -112,7 +112,7 @@ class StackValue - } - Value constant() const { - MOZ_ASSERT(kind_ == Constant); -- return data.constant.v; -+ return data.constant.v.asValueRef(); - } - ValueOperand reg() const { - MOZ_ASSERT(kind_ == Register); -diff --git js/src/jit/CacheIRCompiler.cpp js/src/jit/CacheIRCompiler.cpp -index 98d2dcbf1b23..35357ed7c8da 100644 ---- js/src/jit/CacheIRCompiler.cpp -+++ js/src/jit/CacheIRCompiler.cpp -@@ -925,7 +925,7 @@ CacheIRWriter::copyStubData(uint8_t* dest) const - *reinterpret_cast(destWords) = field.asInt64(); - break; - case StubField::Type::Value: -- InitGCPtr(destWords, field.asInt64()); -+ AsGCPtr(destWords)->init(Value::fromRawBits(uint64_t(field.asInt64()))); - break; - case StubField::Type::Limit: - MOZ_CRASH("Invalid type"); -diff --git js/src/jit/RegisterSets.h js/src/jit/RegisterSets.h -index b6436a801b1c..749730aac4c6 100644 ---- js/src/jit/RegisterSets.h -+++ js/src/jit/RegisterSets.h -@@ -226,13 +226,13 @@ class ConstantOrRegister - - // Space to hold either a Value or a TypedOrValueRegister. - union U { -- Value constant; -+ JS::UninitializedValue constant; - TypedOrValueRegister reg; - } data; - -- const Value& dataValue() const { -+ Value dataValue() const { - MOZ_ASSERT(constant()); -- return data.constant; -+ return data.constant.asValueRef(); - } - void setDataValue(const Value& value) { - MOZ_ASSERT(constant()); -@@ -268,7 +268,7 @@ class ConstantOrRegister - return constant_; - } - -- const Value& value() const { -+ Value value() const { - return dataValue(); - } - -diff --git js/src/jit/RematerializedFrame.cpp js/src/jit/RematerializedFrame.cpp -index f12475e5ee55..8cfb0c0d0b87 100644 ---- js/src/jit/RematerializedFrame.cpp -+++ js/src/jit/RematerializedFrame.cpp -@@ -60,9 +60,17 @@ RematerializedFrame::New(JSContext* cx, uint8_t* top, InlineFrameIterator& iter, - { - unsigned numFormals = iter.isFunctionFrame() ? iter.calleeTemplate()->nargs() : 0; - unsigned argSlots = Max(numFormals, iter.numActualArgs()); -- size_t numBytes = sizeof(RematerializedFrame) + -- (argSlots + iter.script()->nfixed()) * sizeof(Value) - -- sizeof(Value); // 1 Value included in sizeof(RematerializedFrame) -+ unsigned extraSlots = argSlots + iter.script()->nfixed(); -+ -+ // One Value slot is included in sizeof(RematerializedFrame), so we can -+ // reduce the extra slot count by one. However, if there are zero slot -+ // allocations total, then reducing the slots by one will lead to -+ // the memory allocation being smaller than sizeof(RematerializedFrame). -+ if (extraSlots > 0) -+ extraSlots -= 1; -+ -+ size_t numBytes = sizeof(RematerializedFrame) + (extraSlots * sizeof(Value)); -+ MOZ_ASSERT(numBytes >= sizeof(RematerializedFrame)); - - void* buf = cx->pod_calloc(numBytes); - if (!buf) -diff --git js/src/wasm/AsmJS.cpp js/src/wasm/AsmJS.cpp -index a5102bd66373..9fe705976ea3 100644 ---- js/src/wasm/AsmJS.cpp -+++ js/src/wasm/AsmJS.cpp -@@ -851,7 +851,7 @@ class NumLit - private: - Which which_; - union { -- Value scalar_; -+ JS::UninitializedValue scalar_; - SimdConstant simd_; - } u; - -@@ -874,7 +874,7 @@ class NumLit - - int32_t toInt32() const { - MOZ_ASSERT(which_ == Fixnum || which_ == NegativeInt || which_ == BigUnsigned); -- return u.scalar_.toInt32(); -+ return u.scalar_.asValueRef().toInt32(); - } - - uint32_t toUint32() const { -@@ -883,17 +883,17 @@ class NumLit - - double toDouble() const { - MOZ_ASSERT(which_ == Double); -- return u.scalar_.toDouble(); -+ return u.scalar_.asValueRef().toDouble(); - } - - float toFloat() const { - MOZ_ASSERT(which_ == Float); -- return float(u.scalar_.toDouble()); -+ return float(u.scalar_.asValueRef().toDouble()); - } - - Value scalarValue() const { - MOZ_ASSERT(which_ != OutOfRangeInt); -- return u.scalar_; -+ return u.scalar_.asValueRef(); - } - - bool isSimd() const -diff --git js/xpconnect/src/XPCWrappedNative.cpp js/xpconnect/src/XPCWrappedNative.cpp -index fd992eb22465..946d671ddd00 100644 ---- js/xpconnect/src/XPCWrappedNative.cpp -+++ js/xpconnect/src/XPCWrappedNative.cpp -@@ -1723,9 +1723,12 @@ CallMethodHelper::ConvertIndependentParam(uint8_t i) - // indirectly, regardless of in/out-ness. - if (type_tag == nsXPTType::T_JSVAL) { - // Root the value. -- dp->val.j.setUndefined(); -- if (!js::AddRawValueRoot(mCallContext, &dp->val.j, "XPCWrappedNative::CallMethod param")) -+ dp->val.j.asValueRef().setUndefined(); -+ if (!js::AddRawValueRoot(mCallContext, &dp->val.j.asValueRef(), -+ "XPCWrappedNative::CallMethod param")) -+ { - return false; -+ } - } - - // Flag cleanup for anything that isn't self-contained. -diff --git xpcom/reflect/xptcall/xptcall.h xpcom/reflect/xptcall/xptcall.h -index ddab2e4af127..4b387e8ee9c1 100644 ---- xpcom/reflect/xptcall/xptcall.h -+++ xpcom/reflect/xptcall/xptcall.h -@@ -39,7 +39,7 @@ struct nsXPTCMiniVariant - // Types below here are unknown to the assembly implementations, and - // therefore _must_ be passed with indirect semantics. We put them in - // the union here for type safety, so that we can avoid void* tricks. -- JS::Value j; -+ JS::UninitializedValue j; - } val; - }; - diff --git a/www/waterfox/files/patch-bug1411745 b/www/waterfox/files/patch-bug1411745 deleted file mode 100644 index f5f25d894da6..000000000000 --- a/www/waterfox/files/patch-bug1411745 +++ /dev/null @@ -1,26 +0,0 @@ -commit 4bd747285cad -Author: Magnus Melin -Date: Sat Dec 9 16:43:16 2017 +0200 - - Bug 1411745 - crash for svg linking to mailbox URI. r=smaug a=gchang - - --HG-- - extra : source : 2a01f65ec8af02827f0621f86e501ad236431415 ---- - dom/base/nsDocument.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git dom/base/nsDocument.cpp dom/base/nsDocument.cpp -index fe44e902241f..ce511f50e9de 100644 ---- dom/base/nsDocument.cpp -+++ dom/base/nsDocument.cpp -@@ -1233,7 +1233,8 @@ nsExternalResourceMap::PendingLoad::OnDataAvailable(nsIRequest* aRequest, - uint64_t aOffset, - uint32_t aCount) - { -- NS_PRECONDITION(mTargetListener, "Shouldn't be getting called!"); -+ // mTargetListener might be null if SetupViewer or AddExternalResource failed. -+ NS_ENSURE_TRUE(mTargetListener, NS_ERROR_FAILURE); - if (mDisplayDocument->ExternalResourceMap().HaveShutDown()) { - return NS_BINDING_ABORTED; - } diff --git a/www/waterfox/files/patch-bug1412011 b/www/waterfox/files/patch-bug1412011 deleted file mode 100644 index 88937770f575..000000000000 --- a/www/waterfox/files/patch-bug1412011 +++ /dev/null @@ -1,100 +0,0 @@ -commit 4112ea0d8cb1 -Author: Emilio Cobos Álvarez -Date: Mon Oct 30 11:02:16 2017 -0400 - - Bug 1412011 - selectors: Be consistent about how we get a parent element for selector matching. r=xidorn, a=ritu - - Source-Repo: https://github.com/servo/servo - Source-Revision: de7595f16fa41c32ca5654aef53c60ad19bb108a - - --HG-- - extra : rebase_source : fc932c8d05ec1861ee16d7a89bfe1da1228d1c08 ---- - servo/components/selectors/matching.rs | 49 +++++++++++++++++++++++----------- - 1 file changed, 33 insertions(+), 16 deletions(-) - -diff --git servo/components/selectors/matching.rs servo/components/selectors/matching.rs -index c6c2db3c4719..30586b27f457 100644 ---- servo/components/selectors/matching.rs -+++ servo/components/selectors/matching.rs -@@ -515,6 +515,32 @@ pub fn matches_complex_selector(mut iter: SelectorIter, - } - } - -+#[inline(always)] -+fn next_element_for_combinator( -+ element: &E, -+ combinator: Combinator, -+) -> Option -+where -+ E: Element, -+{ -+ match combinator { -+ Combinator::NextSibling | -+ Combinator::LaterSibling => { -+ element.prev_sibling_element() -+ } -+ Combinator::Child | -+ Combinator::Descendant => { -+ if element.blocks_ancestor_combinators() { -+ return None; -+ } -+ element.parent_element() -+ } -+ Combinator::PseudoElement => { -+ element.pseudo_element_originating_element() -+ } -+ } -+} -+ - fn matches_complex_selector_internal(mut selector_iter: SelectorIter, - element: &E, - context: &mut LocalMatchingContext, -@@ -546,28 +572,23 @@ fn matches_complex_selector_internal(mut selector_iter: SelectorIter SelectorMatchingResult::Matched, - Some(c) => { -- let (mut next_element, candidate_not_found) = match c { -+ let candidate_not_found= match c { - Combinator::NextSibling | Combinator::LaterSibling => { - // Only ancestor combinators are allowed while looking for - // relevant links, so switch to not looking. - *relevant_link = RelevantLinkStatus::NotLooking; -- (element.prev_sibling_element(), -- SelectorMatchingResult::NotMatchedAndRestartFromClosestDescendant) -+ SelectorMatchingResult::NotMatchedAndRestartFromClosestDescendant - } - Combinator::Child | Combinator::Descendant => { -- if element.blocks_ancestor_combinators() { -- (None, SelectorMatchingResult::NotMatchedGlobally) -- } else { -- (element.parent_element(), -- SelectorMatchingResult::NotMatchedGlobally) -- } -+ SelectorMatchingResult::NotMatchedGlobally - } - Combinator::PseudoElement => { -- (element.pseudo_element_originating_element(), -- SelectorMatchingResult::NotMatchedGlobally) -+ SelectorMatchingResult::NotMatchedGlobally - } - }; - -+ let mut next_element = next_element_for_combinator(element, c); -+ - loop { - let element = match next_element { - None => return candidate_not_found, -@@ -607,11 +628,7 @@ fn matches_complex_selector_internal(mut selector_iter: SelectorIter {}, - } -- next_element = if siblings { -- element.prev_sibling_element() -- } else { -- element.parent_element() -- }; -+ next_element = next_element_for_combinator(&element, c); - } - } - } diff --git a/www/waterfox/files/patch-bug1412145 b/www/waterfox/files/patch-bug1412145 deleted file mode 100644 index 595ba7297dc9..000000000000 --- a/www/waterfox/files/patch-bug1412145 +++ /dev/null @@ -1,286 +0,0 @@ -commit d83a24ce6fb3 -Author: Xidorn Quan -Date: Tue Nov 28 17:06:51 2017 -0600 - - Bug 1412145 - Drop more backpointers of CSSOM objects in dtor and unlink. r=bz, a=gchang - - MozReview-Commit-ID: Ftg3WMBBNlO ---- - layout/style/GroupRule.cpp | 7 +++++++ - layout/style/GroupRule.h | 1 + - layout/style/MediaList.h | 4 +++- - layout/style/ServoCSSRuleList.cpp | 2 ++ - layout/style/ServoKeyframeRule.cpp | 12 ++++++++++-- - layout/style/ServoKeyframesRule.cpp | 23 ++++++++++++++++------- - layout/style/ServoMediaRule.cpp | 17 +++++++++++++++-- - layout/style/ServoPageRule.cpp | 2 ++ - layout/style/ServoStyleRule.cpp | 1 + - layout/style/nsCSSRules.cpp | 31 +++++++++++++++++++++++++++---- - 10 files changed, 84 insertions(+), 16 deletions(-) - -diff --git layout/style/GroupRule.cpp layout/style/GroupRule.cpp -index 28739e1818eb..32bd8c83e43a 100644 ---- layout/style/GroupRule.cpp -+++ layout/style/GroupRule.cpp -@@ -198,6 +198,13 @@ GeckoGroupRuleRules::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const - // ServoGroupRuleRules - // - -+ServoGroupRuleRules::~ServoGroupRuleRules() -+{ -+ if (mRuleList) { -+ mRuleList->DropReference(); -+ } -+} -+ - #ifdef DEBUG - void - ServoGroupRuleRules::List(FILE* out, int32_t aIndent) const -diff --git layout/style/GroupRule.h layout/style/GroupRule.h -index ac9e26921f0b..5c336e5c3611 100644 ---- layout/style/GroupRule.h -+++ layout/style/GroupRule.h -@@ -87,6 +87,7 @@ struct ServoGroupRuleRules - // Do we ever clone Servo rules? - MOZ_ASSERT_UNREACHABLE("stylo: Cloning GroupRule not implemented"); - } -+ ~ServoGroupRuleRules(); - - void SetParentRule(GroupRule* aParentRule) { - if (mRuleList) { -diff --git layout/style/MediaList.h layout/style/MediaList.h -index 4e8c12a2461a..b95e6ec26895 100644 ---- layout/style/MediaList.h -+++ layout/style/MediaList.h -@@ -84,7 +84,9 @@ protected: - virtual nsresult Delete(const nsAString& aOldMedium) = 0; - virtual nsresult Append(const nsAString& aNewMedium) = 0; - -- virtual ~MediaList() {} -+ virtual ~MediaList() { -+ MOZ_ASSERT(!mStyleSheet, "Backpointer should have been cleared"); -+ } - - // not refcounted; sheet will let us know when it goes away - // mStyleSheet is the sheet that needs to be dirtied when this -diff --git layout/style/ServoCSSRuleList.cpp layout/style/ServoCSSRuleList.cpp -index 37ce9be9f337..31f481899964 100644 ---- layout/style/ServoCSSRuleList.cpp -+++ layout/style/ServoCSSRuleList.cpp -@@ -234,6 +234,8 @@ ServoCSSRuleList::GetDOMCSSRuleType(uint32_t aIndex) const - - ServoCSSRuleList::~ServoCSSRuleList() - { -+ MOZ_ASSERT(!mStyleSheet, "Backpointer should have been cleared"); -+ MOZ_ASSERT(!mParentRule, "Backpointer should have been cleared"); - DropAllRules(); - } - -diff --git layout/style/ServoKeyframeRule.cpp layout/style/ServoKeyframeRule.cpp -index 1be82c3100c5..6ca8a1815f8c 100644 ---- layout/style/ServoKeyframeRule.cpp -+++ layout/style/ServoKeyframeRule.cpp -@@ -35,7 +35,10 @@ public: - return NS_OK; - } - -- void DropReference() { mRule = nullptr; } -+ void DropReference() { -+ mRule = nullptr; -+ mDecls->SetOwningRule(nullptr); -+ } - - DeclarationBlock* GetCSSDeclaration(Operation aOperation) final - { -@@ -81,7 +84,9 @@ public: - } - - private: -- virtual ~ServoKeyframeDeclaration() {} -+ virtual ~ServoKeyframeDeclaration() { -+ MOZ_ASSERT(!mRule, "Backpointer should have been cleared"); -+ } - - ServoKeyframeRule* mRule; - RefPtr mDecls; -@@ -102,6 +107,9 @@ NS_INTERFACE_MAP_END_INHERITING(nsDOMCSSDeclaration) - - ServoKeyframeRule::~ServoKeyframeRule() - { -+ if (mDeclaration) { -+ mDeclaration->DropReference(); -+ } - } - - NS_IMPL_ADDREF_INHERITED(ServoKeyframeRule, dom::CSSKeyframeRule) -diff --git layout/style/ServoKeyframesRule.cpp layout/style/ServoKeyframesRule.cpp -index 9a7252a5a639..7341b954ec60 100644 ---- layout/style/ServoKeyframesRule.cpp -+++ layout/style/ServoKeyframesRule.cpp -@@ -90,7 +90,12 @@ public: - { - mStyleSheet = nullptr; - mParentRule = nullptr; -- DropAllRules(); -+ for (css::Rule* rule : mRules) { -+ if (rule) { -+ rule->SetStyleSheet(nullptr); -+ rule->SetParentRule(nullptr); -+ } -+ } - } - - size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const -@@ -103,15 +108,16 @@ public: - } - - private: -- virtual ~ServoKeyframeList() {} -+ virtual ~ServoKeyframeList() { -+ MOZ_ASSERT(!mParentRule, "Backpointer should have been cleared"); -+ MOZ_ASSERT(!mStyleSheet, "Backpointer should have been cleared"); -+ DropAllRules(); -+ } - - void DropAllRules() - { -- for (css::Rule* rule : mRules) { -- if (rule) { -- rule->SetStyleSheet(nullptr); -- rule->SetParentRule(nullptr); -- } -+ if (mParentRule || mStyleSheet) { -+ DropReference(); - } - mRules.Clear(); - mRawRule = nullptr; -@@ -163,6 +169,9 @@ ServoKeyframesRule::ServoKeyframesRule(RefPtr aRawRule, - - ServoKeyframesRule::~ServoKeyframesRule() - { -+ if (mKeyframeList) { -+ mKeyframeList->DropReference(); -+ } - } - - NS_IMPL_ADDREF_INHERITED(ServoKeyframesRule, dom::CSSKeyframesRule) -diff --git layout/style/ServoMediaRule.cpp layout/style/ServoMediaRule.cpp -index 002ae20ffd0b..fbda581a377f 100644 ---- layout/style/ServoMediaRule.cpp -+++ layout/style/ServoMediaRule.cpp -@@ -24,6 +24,9 @@ ServoMediaRule::ServoMediaRule(RefPtr aRawRule, - - ServoMediaRule::~ServoMediaRule() - { -+ if (mMediaList) { -+ mMediaList->SetStyleSheet(nullptr); -+ } - } - - NS_IMPL_ADDREF_INHERITED(ServoMediaRule, CSSMediaRule) -@@ -33,8 +36,18 @@ NS_IMPL_RELEASE_INHERITED(ServoMediaRule, CSSMediaRule) - NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(ServoMediaRule) - NS_INTERFACE_MAP_END_INHERITING(CSSMediaRule) - --NS_IMPL_CYCLE_COLLECTION_INHERITED(ServoMediaRule, CSSMediaRule, -- mMediaList) -+NS_IMPL_CYCLE_COLLECTION_CLASS(ServoMediaRule) -+ -+NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(ServoMediaRule, CSSMediaRule) -+ if (tmp->mMediaList) { -+ tmp->mMediaList->SetStyleSheet(nullptr); -+ tmp->mMediaList = nullptr; -+ } -+NS_IMPL_CYCLE_COLLECTION_UNLINK_END -+ -+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(ServoMediaRule, CSSMediaRule) -+ NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mMediaList) -+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END - - /* virtual */ already_AddRefed - ServoMediaRule::Clone() const -diff --git layout/style/ServoPageRule.cpp layout/style/ServoPageRule.cpp -index 97c718ed1ba9..93e8ff334122 100644 ---- layout/style/ServoPageRule.cpp -+++ layout/style/ServoPageRule.cpp -@@ -26,6 +26,7 @@ ServoPageRuleDeclaration::ServoPageRuleDeclaration( - - ServoPageRuleDeclaration::~ServoPageRuleDeclaration() - { -+ mDecls->SetOwningRule(nullptr); - } - - // QueryInterface implementation for ServoPageRuleDeclaration -@@ -141,6 +142,7 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(ServoPageRule, CSSPageRule) - // NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER which we can't use - // directly because the wrapper is on the declaration, not on us. - tmp->mDecls.ReleaseWrapper(static_cast(p)); -+ tmp->mDecls.mDecls->SetOwningRule(nullptr); - NS_IMPL_CYCLE_COLLECTION_UNLINK_END - - NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(ServoPageRule, CSSPageRule) -diff --git layout/style/ServoStyleRule.cpp layout/style/ServoStyleRule.cpp -index 1d7470eef037..855e643515f9 100644 ---- layout/style/ServoStyleRule.cpp -+++ layout/style/ServoStyleRule.cpp -@@ -28,6 +28,7 @@ ServoStyleRuleDeclaration::ServoStyleRuleDeclaration( - - ServoStyleRuleDeclaration::~ServoStyleRuleDeclaration() - { -+ mDecls->SetOwningRule(nullptr); - } - - // QueryInterface implementation for ServoStyleRuleDeclaration -diff --git layout/style/nsCSSRules.cpp layout/style/nsCSSRules.cpp -index 5081244c6a53..0bdedc4a3b03 100644 ---- layout/style/nsCSSRules.cpp -+++ layout/style/nsCSSRules.cpp -@@ -212,12 +212,25 @@ ImportRule::~ImportRule() - NS_IMPL_ADDREF_INHERITED(ImportRule, CSSImportRule) - NS_IMPL_RELEASE_INHERITED(ImportRule, CSSImportRule) - --NS_IMPL_CYCLE_COLLECTION_INHERITED(ImportRule, CSSImportRule, mMedia, mChildSheet) -- - // QueryInterface implementation for ImportRule - NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(ImportRule) - NS_INTERFACE_MAP_END_INHERITING(CSSImportRule) - -+NS_IMPL_CYCLE_COLLECTION_CLASS(ImportRule) -+ -+NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(ImportRule, CSSImportRule) -+ if (tmp->mChildSheet) { -+ tmp->mChildSheet->SetOwnerRule(nullptr); -+ tmp->mChildSheet = nullptr; -+ } -+ tmp->mMedia = nullptr; -+NS_IMPL_CYCLE_COLLECTION_UNLINK_END -+ -+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(ImportRule, CSSImportRule) -+ NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mMedia) -+ NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mChildSheet) -+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END -+ - #ifdef DEBUG - /* virtual */ void - ImportRule::List(FILE* out, int32_t aIndent) const -@@ -342,8 +355,18 @@ NS_IMPL_RELEASE_INHERITED(MediaRule, CSSMediaRule) - NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(MediaRule) - NS_INTERFACE_MAP_END_INHERITING(CSSMediaRule) - --NS_IMPL_CYCLE_COLLECTION_INHERITED(MediaRule, CSSMediaRule, -- mMedia) -+NS_IMPL_CYCLE_COLLECTION_CLASS(MediaRule) -+ -+NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(MediaRule, CSSMediaRule) -+ if (tmp->mMedia) { -+ tmp->mMedia->SetStyleSheet(nullptr); -+ tmp->mMedia = nullptr; -+ } -+NS_IMPL_CYCLE_COLLECTION_UNLINK_END -+ -+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(MediaRule, CSSMediaRule) -+ NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mMedia) -+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END - - /* virtual */ void - MediaRule::SetStyleSheet(StyleSheet* aSheet) diff --git a/www/waterfox/files/patch-bug1412420 b/www/waterfox/files/patch-bug1412420 deleted file mode 100644 index 6bafc3fb91fc..000000000000 --- a/www/waterfox/files/patch-bug1412420 +++ /dev/null @@ -1,284 +0,0 @@ -commit c3b597795e95 -Author: Jan de Mooij -Date: Sat Dec 16 16:22:13 2017 -0600 - - Bug 1412420 - Ensure upper bits are zeroed when calling a function that returns int32. r=nbp a=ritu - - --HG-- - extra : source : 26d3df5b58fb60facb9057dc1e86576127c9e1f5 ---- - js/src/irregexp/NativeRegExpMacroAssembler.cpp | 4 ++-- - js/src/irregexp/RegExpStack.cpp | 2 +- - js/src/irregexp/RegExpStack.h | 2 +- - js/src/jit/CodeGenerator.cpp | 12 ++++++------ - js/src/jit/MacroAssembler-inl.h | 11 +++++++++++ - js/src/jit/MacroAssembler.cpp | 2 +- - js/src/jit/MacroAssembler.h | 3 ++- - js/src/jit/SharedIC.cpp | 16 ++++++++-------- - js/src/jit/shared/CodeGenerator-shared.h | 8 +++++--- - js/src/jit/x86/CodeGenerator-x86.cpp | 4 ++-- - 10 files changed, 39 insertions(+), 25 deletions(-) - -diff --git js/src/irregexp/NativeRegExpMacroAssembler.cpp js/src/irregexp/NativeRegExpMacroAssembler.cpp -index 004bb8e108f2..0c5743ea506b 100644 ---- js/src/irregexp/NativeRegExpMacroAssembler.cpp -+++ js/src/irregexp/NativeRegExpMacroAssembler.cpp -@@ -453,7 +453,7 @@ NativeRegExpMacroAssembler::GenerateCode(JSContext* cx, bool match_only) - masm.setupUnalignedABICall(temp0); - masm.passABIArg(temp1); - masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, GrowBacktrackStack)); -- masm.storeCallWordResult(temp0); -+ masm.storeCallBoolResult(temp0); - - masm.PopRegsInMask(volatileRegs); - -@@ -882,7 +882,7 @@ NativeRegExpMacroAssembler::CheckNotBackReferenceIgnoreCase(int start_reg, Label - int (*fun)(const char16_t*, const char16_t*, size_t) = CaseInsensitiveCompareUCStrings; - masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, fun)); - } -- masm.storeCallWordResult(temp0); -+ masm.storeCallInt32Result(temp0); - - masm.PopRegsInMask(volatileRegs); - -diff --git js/src/irregexp/RegExpStack.cpp js/src/irregexp/RegExpStack.cpp -index 7ea47149ed40..15008ccd7b9b 100644 ---- js/src/irregexp/RegExpStack.cpp -+++ js/src/irregexp/RegExpStack.cpp -@@ -44,7 +44,7 @@ RegExpStackScope::~RegExpStackScope() - regexp_stack->reset(); - } - --int -+bool - irregexp::GrowBacktrackStack(JSRuntime* rt) - { - AutoUnsafeCallWithABI unsafe; -diff --git js/src/irregexp/RegExpStack.h js/src/irregexp/RegExpStack.h -index da81567a11b6..c92666f2427a 100644 ---- js/src/irregexp/RegExpStack.h -+++ js/src/irregexp/RegExpStack.h -@@ -114,7 +114,7 @@ class RegExpStack - } - }; - --int -+bool - GrowBacktrackStack(JSRuntime* rt); - - }} // namespace js::irregexp -diff --git js/src/jit/CodeGenerator.cpp js/src/jit/CodeGenerator.cpp -index 22c0a3163232..4befbdc285db 100644 ---- js/src/jit/CodeGenerator.cpp -+++ js/src/jit/CodeGenerator.cpp -@@ -1640,7 +1640,7 @@ CreateDependentString::generateFallback(MacroAssembler& masm, LiveRegisterSet re - masm.callWithABI(kind == FallbackKind::FatInlineString - ? JS_FUNC_TO_DATA_PTR(void*, AllocateFatInlineString) - : JS_FUNC_TO_DATA_PTR(void*, AllocateString)); -- masm.storeCallWordResult(string_); -+ masm.storeCallPointerResult(string_); - - masm.PopRegsInMask(regsToSave); - -@@ -1679,7 +1679,7 @@ CreateMatchResultFallback(MacroAssembler& masm, LiveRegisterSet regsToSave, - masm.move32(Imm32(int32_t(templateObj->as().numDynamicSlots())), temp5); - masm.passABIArg(temp5); - masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, CreateMatchResultFallbackFunc)); -- masm.storeCallWordResult(object); -+ masm.storeCallPointerResult(object); - - masm.PopRegsInMask(regsToSave); - -@@ -7976,7 +7976,7 @@ JitRuntime::generateMallocStub(JSContext* cx) - masm.passABIArg(regZone); - masm.passABIArg(regNBytes); - masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, MallocWrapper)); -- masm.storeCallWordResult(regReturn); -+ masm.storeCallPointerResult(regReturn); - - masm.PopRegsInMask(save); - masm.ret(); -@@ -9445,7 +9445,7 @@ CodeGenerator::emitRest(LInstruction* lir, Register array, Register numActuals, - callVM(InitRestParameterInfo, lir); - - if (saveAndRestore) { -- storeResultTo(resultreg); -+ storePointerResultTo(resultreg); - restoreLive(lir); - } - } -@@ -10682,8 +10682,8 @@ CodeGenerator::visitOutOfLineTypeOfV(OutOfLineTypeOfV* ool) - masm.passABIArg(obj); - masm.movePtr(ImmPtr(gen->runtime), output); - masm.passABIArg(output); -- masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, TypeOfObject)); -- masm.storeCallWordResult(output); -+ masm.callWithABI(JS_FUNC_TO_DATA_PTR(void*, jit::TypeOfObject)); -+ masm.storeCallPointerResult(output); - restoreVolatile(output); - - masm.jump(ool->rejoin()); -diff --git js/src/jit/MacroAssembler-inl.h js/src/jit/MacroAssembler-inl.h -index 9d0acbfb4002..a1f9716e1329 100644 ---- js/src/jit/MacroAssembler-inl.h -+++ js/src/jit/MacroAssembler-inl.h -@@ -831,6 +831,17 @@ MacroAssembler::storeCallBoolResult(Register reg) - and32(Imm32(0xFF), reg); - } - -+void -+MacroAssembler::storeCallInt32Result(Register reg) -+{ -+#if JS_BITS_PER_WORD == 32 -+ storeCallPointerResult(reg); -+#else -+ // Ensure the upper 32 bits are cleared. -+ move32(ReturnReg, reg); -+#endif -+} -+ - void - MacroAssembler::storeCallResultValue(AnyRegister dest) - { -diff --git js/src/jit/MacroAssembler.cpp js/src/jit/MacroAssembler.cpp -index 0863dd980e93..25c284324bfe 100644 ---- js/src/jit/MacroAssembler.cpp -+++ js/src/jit/MacroAssembler.cpp -@@ -2117,7 +2117,7 @@ MacroAssembler::outOfLineTruncateSlow(FloatRegister src, Register dest, bool wid - callWithABI(mozilla::BitwiseCast(JS::ToInt32), - MoveOp::GENERAL, CheckUnsafeCallWithABI::DontCheckOther); - } -- storeCallWordResult(dest); -+ storeCallInt32Result(dest); - - #if defined(JS_CODEGEN_ARM) || defined(JS_CODEGEN_ARM64) || \ - defined(JS_CODEGEN_MIPS32) || defined(JS_CODEGEN_MIPS64) -diff --git js/src/jit/MacroAssembler.h js/src/jit/MacroAssembler.h -index e353c5aa10f5..2c8b005b7008 100644 ---- js/src/jit/MacroAssembler.h -+++ js/src/jit/MacroAssembler.h -@@ -1630,12 +1630,13 @@ class MacroAssembler : public MacroAssemblerSpecific - storeTypedOrValue(src.reg(), dest); - } - -- void storeCallWordResult(Register reg) { -+ void storeCallPointerResult(Register reg) { - if (reg != ReturnReg) - mov(ReturnReg, reg); - } - - inline void storeCallBoolResult(Register reg); -+ inline void storeCallInt32Result(Register reg); - - void storeCallFloatResult(FloatRegister reg) { - if (reg != ReturnDoubleReg) -diff --git js/src/jit/SharedIC.cpp js/src/jit/SharedIC.cpp -index 0c8be36a592d..1f88cc93176d 100644 ---- js/src/jit/SharedIC.cpp -+++ js/src/jit/SharedIC.cpp -@@ -1145,19 +1145,19 @@ ICBinaryArith_BooleanWithInt32::Compiler::generateStubCode(MacroAssembler& masm) - break; - } - case JSOP_BITOR: { -- masm.orPtr(rhsReg, lhsReg); -+ masm.or32(rhsReg, lhsReg); - masm.tagValue(JSVAL_TYPE_INT32, lhsReg, R0); - EmitReturnFromIC(masm); - break; - } - case JSOP_BITXOR: { -- masm.xorPtr(rhsReg, lhsReg); -+ masm.xor32(rhsReg, lhsReg); - masm.tagValue(JSVAL_TYPE_INT32, lhsReg, R0); - EmitReturnFromIC(masm); - break; - } - case JSOP_BITAND: { -- masm.andPtr(rhsReg, lhsReg); -+ masm.and32(rhsReg, lhsReg); - masm.tagValue(JSVAL_TYPE_INT32, lhsReg, R0); - EmitReturnFromIC(masm); - break; -@@ -1206,7 +1206,7 @@ ICBinaryArith_DoubleWithInt32::Compiler::generateStubCode(MacroAssembler& masm) - masm.setupUnalignedABICall(scratchReg); - masm.passABIArg(FloatReg0, MoveOp::DOUBLE); - masm.callWithABI(mozilla::BitwiseCast(JS::ToInt32)); -- masm.storeCallWordResult(scratchReg); -+ masm.storeCallInt32Result(scratchReg); - masm.pop(intReg); - - masm.bind(&doneTruncate); -@@ -1216,13 +1216,13 @@ ICBinaryArith_DoubleWithInt32::Compiler::generateStubCode(MacroAssembler& masm) - // All handled ops commute, so no need to worry about ordering. - switch(op) { - case JSOP_BITOR: -- masm.orPtr(intReg, intReg2); -+ masm.or32(intReg, intReg2); - break; - case JSOP_BITXOR: -- masm.xorPtr(intReg, intReg2); -+ masm.xor32(intReg, intReg2); - break; - case JSOP_BITAND: -- masm.andPtr(intReg, intReg2); -+ masm.and32(intReg, intReg2); - break; - default: - MOZ_CRASH("Unhandled op for BinaryArith_DoubleWithInt32."); -@@ -1359,7 +1359,7 @@ ICUnaryArith_Double::Compiler::generateStubCode(MacroAssembler& masm) - masm.setupUnalignedABICall(scratchReg); - masm.passABIArg(FloatReg0, MoveOp::DOUBLE); - masm.callWithABI(BitwiseCast(JS::ToInt32)); -- masm.storeCallWordResult(scratchReg); -+ masm.storeCallInt32Result(scratchReg); - - masm.bind(&doneTruncate); - masm.not32(scratchReg); -diff --git js/src/jit/shared/CodeGenerator-shared.h js/src/jit/shared/CodeGenerator-shared.h -index d75572dac0a6..48b2b4d8561c 100644 ---- js/src/jit/shared/CodeGenerator-shared.h -+++ js/src/jit/shared/CodeGenerator-shared.h -@@ -454,8 +454,8 @@ class CodeGeneratorShared : public LElementVisitor - return masm.PushWithPatch(t); - } - -- void storeResultTo(Register reg) { -- masm.storeCallWordResult(reg); -+ void storePointerResultTo(Register reg) { -+ masm.storeCallPointerResult(reg); - } - - void storeFloatResultTo(FloatRegister reg) { -@@ -725,7 +725,9 @@ class StoreRegisterTo - { } - - inline void generate(CodeGeneratorShared* codegen) const { -- codegen->storeResultTo(out_); -+ // It's okay to use storePointerResultTo here - the VMFunction wrapper -+ // ensures the upper bytes are zero for bool/int32 return values. -+ codegen->storePointerResultTo(out_); - } - inline LiveRegisterSet clobbered() const { - LiveRegisterSet set; -diff --git js/src/jit/x86/CodeGenerator-x86.cpp js/src/jit/x86/CodeGenerator-x86.cpp -index e2f80c4ac8fc..fe358c370baf 100644 ---- js/src/jit/x86/CodeGenerator-x86.cpp -+++ js/src/jit/x86/CodeGenerator-x86.cpp -@@ -747,7 +747,7 @@ CodeGeneratorX86::visitOutOfLineTruncate(OutOfLineTruncate* ool) - masm.callWithABI(BitwiseCast(JS::ToInt32), MoveOp::GENERAL, - CheckUnsafeCallWithABI::DontCheckOther); - } -- masm.storeCallWordResult(output); -+ masm.storeCallInt32Result(output); - - restoreVolatile(output); - } -@@ -839,7 +839,7 @@ CodeGeneratorX86::visitOutOfLineTruncateFloat32(OutOfLineTruncateFloat32* ool) - CheckUnsafeCallWithABI::DontCheckOther); - } - -- masm.storeCallWordResult(output); -+ masm.storeCallInt32Result(output); - masm.Pop(input); - - restoreVolatile(output); diff --git a/www/waterfox/files/patch-bug1412558 b/www/waterfox/files/patch-bug1412558 deleted file mode 100644 index dd142370e238..000000000000 --- a/www/waterfox/files/patch-bug1412558 +++ /dev/null @@ -1,42 +0,0 @@ -diff --git dom/media/flac/FlacDecoder.cpp dom/media/flac/FlacDecoder.cpp -index 53fc3c9937f7..b23771ab80fa 100644 ---- dom/media/flac/FlacDecoder.cpp -+++ dom/media/flac/FlacDecoder.cpp -@@ -7,6 +7,7 @@ - #include "FlacDecoder.h" - #include "MediaContainerType.h" - #include "MediaPrefs.h" -+#include "PDMFactory.h" - - namespace mozilla { - -@@ -15,6 +16,10 @@ FlacDecoder::IsEnabled() - { - #ifdef MOZ_FFVPX - return MediaPrefs::FlacEnabled(); -+#elif defined(MOZ_FFMPEG) -+ RefPtr platform = new PDMFactory(); -+ return MediaPrefs::FlacEnabled() && platform->SupportsMimeType(NS_LITERAL_CSTRING("audio/flac"), -+ /* DecoderDoctorDiagnostics* */ nullptr); - #else - // Until bug 1295886 is fixed. - return false; -diff --git old-configure.in old-configure.in -index b8ce71278548..410be683c2f6 100644 ---- old-configure.in -+++ old-configure.in -@@ -3279,11 +3279,11 @@ dnl = FFmpeg's ffvpx configuration - dnl ======================================================== - - MOZ_FFVPX= --case "$CPU_ARCH" in -- x86) -+case "$OS_ARCH:$CPU_ARCH" in -+ WINNT:x86) - MOZ_FFVPX=1 - ;; -- x86_64) -+ *:x86_64) - MOZ_FFVPX=1 - ;; - esac diff --git a/www/waterfox/files/patch-bug1412741 b/www/waterfox/files/patch-bug1412741 deleted file mode 100644 index 5bf24d87ce61..000000000000 --- a/www/waterfox/files/patch-bug1412741 +++ /dev/null @@ -1,87 +0,0 @@ -commit 9bfa45f5e083 -Author: Boris Zbarsky -Date: Thu Nov 2 13:02:55 2017 -0400 - - Bug 1412741 - Back out the fix for bug 1381408, because that change doesn't look like it's web-compatible. r=peterv, a=ritu - - MozReview-Commit-ID: LSYYAt0bAkT - - --HG-- - extra : source : 1fdce3a0396c599ad52749e1650beeb8f455d891 ---- - js/xpconnect/tests/mochitest/test_bug862380.html | 23 +++++----------------- - js/xpconnect/wrappers/FilteringWrapper.cpp | 5 +++-- - .../cross-origin-objects.html.ini | 10 ++++++++++ - 3 files changed, 18 insertions(+), 20 deletions(-) - -diff --git js/xpconnect/tests/mochitest/test_bug862380.html js/xpconnect/tests/mochitest/test_bug862380.html -index 0f1611776320..0d3fb7329358 100644 ---- js/xpconnect/tests/mochitest/test_bug862380.html -+++ js/xpconnect/tests/mochitest/test_bug862380.html -@@ -13,29 +13,16 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=862380 - /** Test for Bug 862380 **/ - SimpleTest.waitForExplicitFinish(); - function go() { -- checkNotEnumerable($('ifr').contentWindow, true); -- checkNotEnumerable($('ifr').contentWindow.location, false); -+ checkNotEnumerable($('ifr').contentWindow); -+ checkNotEnumerable($('ifr').contentWindow.location); - SimpleTest.finish(); - } - --function checkNotEnumerable(obj, isWindow) { -+ function checkNotEnumerable(obj) { - try { -- const expectedWindow = ["0", "window", "location", "top", "close", -- "focus", "blur", "postMessage", "self", "closed", -- "frames", "length", "opener", "parent"]; -- const expectedLocation = ["replace", "href"]; -- const expected = isWindow ? expectedWindow : expectedLocation; -- is(Object.keys(obj).length, expected.length, -- "Object.keys gives right array length"); -- var actual = []; -+ is(Object.keys(obj).length, 0, "Object.keys gives empty array"); - for (var i in obj) -- actual.push(i); -- is(actual.length, expected.length, -- "Enumeration sees the right number of props"); -- actual.sort(); -- expected.sort(); -- for (var i = 0; i < actual.length; ++i) -- is(actual[i], expected[i], "Arrays should be the same " + i); -+ ok(false, "Enumerated something: " + i); - } catch (e) { - ok(false, "threw: " + e); - } -diff --git js/xpconnect/wrappers/FilteringWrapper.cpp js/xpconnect/wrappers/FilteringWrapper.cpp -index c35c3e896afc..1e986c734cde 100644 ---- js/xpconnect/wrappers/FilteringWrapper.cpp -+++ js/xpconnect/wrappers/FilteringWrapper.cpp -@@ -223,8 +223,9 @@ CrossOriginXrayWrapper::getPropertyDescriptor(JSContext* cx, - // All properties on cross-origin DOM objects are |own|. - desc.object().set(wrapper); - -- // All properties on cross-origin DOM objects are "configurable". Any -- // value attributes are read-only. -+ // All properties on cross-origin DOM objects are non-enumerable and -+ // "configurable". Any value attributes are read-only. -+ desc.attributesRef() &= ~JSPROP_ENUMERATE; - desc.attributesRef() &= ~JSPROP_PERMANENT; - if (!desc.getter() && !desc.setter()) - desc.attributesRef() |= JSPROP_READONLY; -diff --git testing/web-platform/meta/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini testing/web-platform/meta/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini -new file mode 100644 -index 000000000000..6c5e683863e9 ---- /dev/null -+++ testing/web-platform/meta/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini -@@ -0,0 +1,10 @@ -+[cross-origin-objects.html] -+ type: testharness -+ [[[GetOwnProperty\]\] - Property descriptors for cross-origin properties should be set up correctly] -+ expected: FAIL -+ -+ [Can only enumerate safelisted properties] -+ expected: FAIL -+ -+ [[[OwnPropertyKeys\]\] should return all properties from cross-origin objects] -+ expected: FAIL diff --git a/www/waterfox/files/patch-bug1412882 b/www/waterfox/files/patch-bug1412882 deleted file mode 100644 index 327b6da45b9b..000000000000 --- a/www/waterfox/files/patch-bug1412882 +++ /dev/null @@ -1,192 +0,0 @@ -commit 7513891383a1 -Author: Jonathan Kew -Date: Sat May 19 08:32:22 2018 +0100 - - Bug 1412882 - Rework gfxFontUtils::MapCharToGlyphFormat4 to be more robust. r=lsalzman, a=RyanVM - - --HG-- - extra : source : e96eaa6603005c3e2361d9d32ef59adb718d4203 ---- - gfx/thebes/gfxFontUtils.cpp | 89 ++++++++++++++++++++++------------------ - gfx/thebes/gfxFontUtils.h | 2 +- - gfx/thebes/gfxHarfBuzzShaper.cpp | 8 +++- - 3 files changed, 57 insertions(+), 42 deletions(-) - -diff --git gfx/thebes/gfxFontUtils.cpp gfx/thebes/gfxFontUtils.cpp -index b3c1cae1bbb67..1590fb52ab6b7 100644 ---- gfx/thebes/gfxFontUtils.cpp -+++ gfx/thebes/gfxFontUtils.cpp -@@ -569,55 +569,64 @@ typedef struct { - #pragma pack() - - uint32_t --gfxFontUtils::MapCharToGlyphFormat4(const uint8_t *aBuf, char16_t aCh) -+gfxFontUtils::MapCharToGlyphFormat4(const uint8_t* aBuf, uint32_t aLength, -+ char16_t aCh) - { - const Format4Cmap *cmap4 = reinterpret_cast(aBuf); -- uint16_t segCount; -- const AutoSwap_PRUint16 *endCodes; -- const AutoSwap_PRUint16 *startCodes; -- const AutoSwap_PRUint16 *idDelta; -- const AutoSwap_PRUint16 *idRangeOffset; -- uint16_t probe; -- uint16_t rangeShiftOver2; -- uint16_t index; -- -- segCount = (uint16_t)(cmap4->segCountX2) / 2; -- -- endCodes = &cmap4->arrays[0]; -- startCodes = &cmap4->arrays[segCount + 1]; // +1 for reserved word between arrays -- idDelta = &startCodes[segCount]; -- idRangeOffset = &idDelta[segCount]; -- -- probe = 1 << (uint16_t)(cmap4->entrySelector); -- rangeShiftOver2 = (uint16_t)(cmap4->rangeShift) / 2; -- -- if ((uint16_t)(startCodes[rangeShiftOver2]) <= aCh) { -- index = rangeShiftOver2; -- } else { -- index = 0; -- } -- -- while (probe > 1) { -- probe >>= 1; -- if ((uint16_t)(startCodes[index + probe]) <= aCh) { -- index += probe; -+ -+ uint16_t segCount = (uint16_t)(cmap4->segCountX2) / 2; -+ -+ const AutoSwap_PRUint16* endCodes = &cmap4->arrays[0]; -+ const AutoSwap_PRUint16* startCodes = &cmap4->arrays[segCount + 1]; -+ const AutoSwap_PRUint16* idDelta = &startCodes[segCount]; -+ const AutoSwap_PRUint16* idRangeOffset = &idDelta[segCount]; -+ -+ // Sanity-check that the fixed-size arrays don't exceed the buffer. -+ const uint8_t* const limit = aBuf + aLength; -+ if ((const uint8_t*)(&idRangeOffset[segCount]) > limit) { -+ return 0; // broken font, just bail out safely -+ } -+ -+ // For most efficient binary search, we want to work on a range of segment -+ // indexes that is a power of 2 so that we can always halve it by shifting. -+ // So we find the largest power of 2 that is <= segCount. -+ // We will offset this range by segOffset so as to reach the end -+ // of the table, provided that doesn't put us beyond the target -+ // value from the outset. -+ uint32_t powerOf2 = mozilla::FindHighestBit(segCount); -+ uint32_t segOffset = segCount - powerOf2; -+ uint32_t idx = 0; -+ -+ if (uint16_t(startCodes[segOffset]) <= aCh) { -+ idx = segOffset; -+ } -+ -+ // Repeatedly halve the size of the range until we find the target group -+ while (powerOf2 > 1) { -+ powerOf2 >>= 1; -+ if (uint16_t(startCodes[idx + powerOf2]) <= aCh) { -+ idx += powerOf2; - } - } - -- if (aCh >= (uint16_t)(startCodes[index]) && aCh <= (uint16_t)(endCodes[index])) { -+ if (aCh >= uint16_t(startCodes[idx]) && aCh <= uint16_t(endCodes[idx])) { - uint16_t result; -- if ((uint16_t)(idRangeOffset[index]) == 0) { -+ if (uint16_t(idRangeOffset[idx]) == 0) { - result = aCh; - } else { -- uint16_t offset = aCh - (uint16_t)(startCodes[index]); -- const AutoSwap_PRUint16 *glyphIndexTable = -- (const AutoSwap_PRUint16*)((const char*)&idRangeOffset[index] + -- (uint16_t)(idRangeOffset[index])); -+ uint16_t offset = aCh - uint16_t(startCodes[idx]); -+ const AutoSwap_PRUint16* glyphIndexTable = -+ (const AutoSwap_PRUint16*)((const char*)&idRangeOffset[idx] + -+ uint16_t(idRangeOffset[idx])); -+ if ((const uint8_t*)(glyphIndexTable + offset + 1) > limit) { -+ return 0; // broken font, just bail out safely -+ } - result = glyphIndexTable[offset]; - } - -- // note that this is unsigned 16-bit arithmetic, and may wrap around -- result += (uint16_t)(idDelta[index]); -+ // Note that this is unsigned 16-bit arithmetic, and may wrap around -+ // (which is required behavior per spec) -+ result += uint16_t(idDelta[idx]); - return result; - } - -@@ -761,7 +770,8 @@ gfxFontUtils::MapCharToGlyph(const uint8_t *aCmapBuf, uint32_t aBufLength, - switch (format) { - case 4: - gid = aUnicode < UNICODE_BMP_LIMIT ? -- MapCharToGlyphFormat4(aCmapBuf + offset, char16_t(aUnicode)) : 0; -+ MapCharToGlyphFormat4(aCmapBuf + offset, aBufLength - offset, -+ char16_t(aUnicode)) : 0; - break; - case 10: - gid = MapCharToGlyphFormat10(aCmapBuf + offset, aUnicode); -@@ -786,6 +796,7 @@ gfxFontUtils::MapCharToGlyph(const uint8_t *aCmapBuf, uint32_t aBufLength, - case 4: - if (aUnicode < UNICODE_BMP_LIMIT) { - varGID = MapCharToGlyphFormat4(aCmapBuf + offset, -+ aBufLength - offset, - char16_t(aUnicode)); - } - break; -diff --git gfx/thebes/gfxFontUtils.h gfx/thebes/gfxFontUtils.h -index 250df442c3a2e..be2f54a9a7026 100644 ---- gfx/thebes/gfxFontUtils.h -+++ gfx/thebes/gfxFontUtils.h -@@ -804,7 +804,7 @@ public: - uint32_t& aUVSOffset); - - static uint32_t -- MapCharToGlyphFormat4(const uint8_t *aBuf, char16_t aCh); -+ MapCharToGlyphFormat4(const uint8_t *aBuf, uint32_t aLength, char16_t aCh); - - static uint32_t - MapCharToGlyphFormat10(const uint8_t *aBuf, uint32_t aCh); -diff --git gfx/thebes/gfxHarfBuzzShaper.cpp gfx/thebes/gfxHarfBuzzShaper.cpp -index c57504a4d9db4..ff638dcef73ad 100644 ---- gfx/thebes/gfxHarfBuzzShaper.cpp -+++ gfx/thebes/gfxHarfBuzzShaper.cpp -@@ -116,13 +116,15 @@ gfxHarfBuzzShaper::GetNominalGlyph(hb_codepoint_t unicode) const - NS_ASSERTION(mCmapTable && (mCmapFormat > 0) && (mSubtableOffset > 0), - "cmap data not correctly set up, expect disaster"); - -+ uint32_t length; - const uint8_t* data = -- (const uint8_t*)hb_blob_get_data(mCmapTable, nullptr); -+ (const uint8_t*)hb_blob_get_data(mCmapTable, &length); - - switch (mCmapFormat) { - case 4: - gid = unicode < UNICODE_BMP_LIMIT ? - gfxFontUtils::MapCharToGlyphFormat4(data + mSubtableOffset, -+ length - mSubtableOffset, - unicode) : 0; - break; - case 10: -@@ -164,8 +166,9 @@ gfxHarfBuzzShaper::GetVariationGlyph(hb_codepoint_t unicode, - NS_ASSERTION(mCmapTable && (mCmapFormat > 0) && (mSubtableOffset > 0), - "cmap data not correctly set up, expect disaster"); - -+ uint32_t length; - const uint8_t* data = -- (const uint8_t*)hb_blob_get_data(mCmapTable, nullptr); -+ (const uint8_t*)hb_blob_get_data(mCmapTable, &length); - - if (mUVSTableOffset) { - hb_codepoint_t gid = -@@ -183,6 +186,7 @@ gfxHarfBuzzShaper::GetVariationGlyph(hb_codepoint_t unicode, - case 4: - if (compat < UNICODE_BMP_LIMIT) { - return gfxFontUtils::MapCharToGlyphFormat4(data + mSubtableOffset, -+ length - mSubtableOffset, - compat); - } - break; diff --git a/www/waterfox/files/patch-bug1413143 b/www/waterfox/files/patch-bug1413143 deleted file mode 100644 index 19067f325bd3..000000000000 --- a/www/waterfox/files/patch-bug1413143 +++ /dev/null @@ -1,306 +0,0 @@ -commit 51708fb1315d -Author: Emilio Cobos Álvarez -Date: Wed Nov 1 11:24:17 2017 +0100 - - Bug 1413143: Make font inflation computation less lazy. r=bz,JanH - - This makes it a bit more straight-forward to change the system font scale, - preserving the sync MediaFeatureChanged event. - - This also avoids notifying media queries when the shell is not initialized. - - In particular, the patch in bug 1404545 allows calling MediaFeatureValuesChanged - on a still-initializing pres-shell. This is nasty, and all this initialization - order is kind of a mess, but I'm not reworking it for now... - - Also, this drops the invalidation of font-inflation when a doctype is added to - the document. GetViewportInfo() already relies on the doctype not changing, as - noted in a comment. - - MozReview-Commit-ID: Knw7dM1B04Y ---- - dom/base/nsDocument.cpp | 2 + - layout/base/PresShell.cpp | 84 ++++++++++++++------------------------- - layout/base/nsIPresShell.h | 36 ++++------------- - layout/base/nsLayoutUtils.cpp | 8 ++-- - layout/base/nsPresContext.cpp | 6 ++- - layout/reftests/bugs/reftest.list | 2 +- - 6 files changed, 48 insertions(+), 90 deletions(-) - -diff --git dom/base/nsDocument.cpp dom/base/nsDocument.cpp -index 03bf17e6a4b9..f3579c9420d6 100644 ---- dom/base/nsDocument.cpp -+++ dom/base/nsDocument.cpp -@@ -8172,6 +8172,8 @@ nsIDocument::AdoptNode(nsINode& aAdoptedNode, ErrorResult& rv) - nsViewportInfo - nsDocument::GetViewportInfo(const ScreenIntSize& aDisplaySize) - { -+ MOZ_ASSERT(mPresShell); -+ - // Compute the CSS-to-LayoutDevice pixel scale as the product of the - // widget scale and the full zoom. - nsPresContext* context = mPresShell->GetPresContext(); -diff --git layout/base/PresShell.cpp layout/base/PresShell.cpp -index 6983d2d3c894..a883791d3695 100644 ---- layout/base/PresShell.cpp -+++ layout/base/PresShell.cpp -@@ -765,7 +765,6 @@ nsIPresShell::nsIPresShell() - , mFontSizeInflationForceEnabled(false) - , mFontSizeInflationDisabledInMasterProcess(false) - , mFontSizeInflationEnabled(false) -- , mFontSizeInflationEnabledIsDirty(false) - , mPaintingIsFrozen(false) - , mIsNeverPainting(false) - , mInFlush(false) -@@ -1010,7 +1009,13 @@ PresShell::Init(nsIDocument* aDocument, - QueryIsActive(); - - // Setup our font inflation preferences. -- SetupFontInflation(); -+ mFontSizeInflationEmPerLine = nsLayoutUtils::FontSizeInflationEmPerLine(); -+ mFontSizeInflationMinTwips = nsLayoutUtils::FontSizeInflationMinTwips(); -+ mFontSizeInflationLineThreshold = nsLayoutUtils::FontSizeInflationLineThreshold(); -+ mFontSizeInflationForceEnabled = nsLayoutUtils::FontSizeInflationForceEnabled(); -+ mFontSizeInflationDisabledInMasterProcess = nsLayoutUtils::FontSizeInflationDisabledInMasterProcess(); -+ // We'll compute the font size inflation state in Initialize(), when we know -+ // the document type. - - mTouchManager.Init(this, mDocument); - -@@ -1700,6 +1705,10 @@ PresShell::Initialize(nscoord aWidth, nscoord aHeight) - NS_ASSERTION(!mDidInitialize, "Why are we being called?"); - - nsCOMPtr kungFuDeathGrip(this); -+ -+ RecomputeFontSizeInflationEnabled(); -+ MOZ_DIAGNOSTIC_ASSERT(!mIsDestroying); -+ - mDidInitialize = true; - - #ifdef DEBUG -@@ -1725,6 +1734,7 @@ PresShell::Initialize(nscoord aWidth, nscoord aHeight) - // time we do this! - nsIFrame* rootFrame = mFrameConstructor->GetRootFrame(); - NS_ASSERTION(!rootFrame, "How did that happen, exactly?"); -+ - if (!rootFrame) { - nsAutoScriptBlocker scriptBlocker; - mFrameConstructor->BeginUpdate(); -@@ -4456,11 +4466,6 @@ PresShell::ContentInserted(nsIDocument* aDocument, - nullptr, - nsCSSFrameConstructor::InsertionKind::Async); - -- if (aChild->NodeType() == nsIDOMNode::DOCUMENT_TYPE_NODE) { -- MOZ_ASSERT(container == aDocument); -- NotifyFontSizeInflationEnabledIsDirty(); -- } -- - VERIFY_STYLE_TREE; - } - -@@ -4505,11 +4510,6 @@ PresShell::ContentRemoved(nsIDocument *aDocument, - mFrameConstructor->ContentRemoved(aMaybeContainer, aChild, oldNextSibling, - nsCSSFrameConstructor::REMOVE_CONTENT); - -- if (aChild->NodeType() == nsIDOMNode::DOCUMENT_TYPE_NODE) { -- MOZ_ASSERT(container == aDocument); -- NotifyFontSizeInflationEnabledIsDirty(); -- } -- - VERIFY_STYLE_TREE; - } - -@@ -10701,33 +10701,34 @@ nsIPresShell::SetScrollPositionClampingScrollPortSize(nscoord aWidth, nscoord aH - } - } - --void --PresShell::SetupFontInflation() --{ -- mFontSizeInflationEmPerLine = nsLayoutUtils::FontSizeInflationEmPerLine(); -- mFontSizeInflationMinTwips = nsLayoutUtils::FontSizeInflationMinTwips(); -- mFontSizeInflationLineThreshold = nsLayoutUtils::FontSizeInflationLineThreshold(); -- mFontSizeInflationForceEnabled = nsLayoutUtils::FontSizeInflationForceEnabled(); -- mFontSizeInflationDisabledInMasterProcess = nsLayoutUtils::FontSizeInflationDisabledInMasterProcess(); -- -- NotifyFontSizeInflationEnabledIsDirty(); --} -- - void - nsIPresShell::RecomputeFontSizeInflationEnabled() - { -- mFontSizeInflationEnabledIsDirty = false; - mFontSizeInflationEnabled = DetermineFontSizeInflationState(); - -- HandleSystemFontScale(); -+ float fontScale = nsLayoutUtils::SystemFontScale(); -+ if (fontScale == 0.0f) { -+ return; -+ } -+ -+ MOZ_ASSERT(mDocument); -+ MOZ_ASSERT(mPresContext); -+ if (mFontSizeInflationEnabled || mDocument->IsSyntheticDocument()) { -+ mPresContext->SetSystemFontScale(1.0f); -+ } else { -+ mPresContext->SetSystemFontScale(fontScale); -+ } - } - - bool - nsIPresShell::DetermineFontSizeInflationState() - { - MOZ_ASSERT(mPresContext, "our pres context should not be null"); -- if ((FontSizeInflationEmPerLine() == 0 && -- FontSizeInflationMinTwips() == 0) || mPresContext->IsChrome()) { -+ if (mPresContext->IsChrome()) { -+ return false; -+ } -+ -+ if (FontSizeInflationEmPerLine() == 0 && FontSizeInflationMinTwips() == 0) { - return false; - } - -@@ -10788,33 +10789,6 @@ nsIPresShell::DetermineFontSizeInflationState() - return true; - } - --bool --nsIPresShell::FontSizeInflationEnabled() --{ -- if (mFontSizeInflationEnabledIsDirty) { -- RecomputeFontSizeInflationEnabled(); -- } -- -- return mFontSizeInflationEnabled; --} -- --void --nsIPresShell::HandleSystemFontScale() --{ -- float fontScale = nsLayoutUtils::SystemFontScale(); -- if (fontScale == 0.0f) { -- return; -- } -- -- MOZ_ASSERT(mDocument && mPresContext, "our document and pres context should not be null"); -- -- if (!mFontSizeInflationEnabled && !mDocument->IsSyntheticDocument()) { -- mPresContext->SetSystemFontScale(fontScale); -- } else { -- mPresContext->SetSystemFontScale(1.0f); -- } --} -- - void - PresShell::PausePainting() - { -diff --git layout/base/nsIPresShell.h layout/base/nsIPresShell.h -index 32f4855347d5..3f6be216a60c 100644 ---- layout/base/nsIPresShell.h -+++ layout/base/nsIPresShell.h -@@ -1507,24 +1507,14 @@ public: - return mFontSizeInflationDisabledInMasterProcess; - } - -- /** -- * Determine if font size inflation is enabled. This value is cached until -- * it becomes dirty. -- * -- * @returns true, if font size inflation is enabled; false otherwise. -- */ -- bool FontSizeInflationEnabled(); -+ bool FontSizeInflationEnabled() const { -+ return mFontSizeInflationEnabled; -+ } - - /** -- * Notify the pres shell that an event occurred making the current value of -- * mFontSizeInflationEnabled invalid. This will schedule a recomputation of -- * whether font size inflation is enabled on the next call to -- * FontSizeInflationEnabled(). -+ * Recomputes whether font-size inflation is enabled. - */ -- void NotifyFontSizeInflationEnabledIsDirty() -- { -- mFontSizeInflationEnabledIsDirty = true; -- } -+ void RecomputeFontSizeInflationEnabled(); - - /** - * Return true if the most recent interruptible reflow was interrupted. -@@ -1590,23 +1580,11 @@ protected: - void DoObserveLayoutFlushes(); - - /** -- * Do computations necessary to determine if font size inflation is enabled. -- * This value is cached after computation, as the computation is somewhat -- * expensive. -- */ -- void RecomputeFontSizeInflationEnabled(); -- -- /** -- * Does the actual work of figuring out the current state of font size inflation. -+ * Does the actual work of figuring out the current state of font size -+ * inflation. - */ - bool DetermineFontSizeInflationState(); - -- /** -- * Apply the system font scale from the corresponding pref to the PresContext, -- * taking into account the current state of font size inflation. -- */ -- void HandleSystemFontScale(); -- - void RecordAlloc(void* aPtr) { - #ifdef DEBUG - MOZ_ASSERT(!mAllocatedPointers.Contains(aPtr)); -diff --git layout/base/nsLayoutUtils.cpp layout/base/nsLayoutUtils.cpp -index e1289fd4a6a6..e165588e9c6c 100644 ---- layout/base/nsLayoutUtils.cpp -+++ layout/base/nsLayoutUtils.cpp -@@ -9130,16 +9130,16 @@ MaybeReflowForInflationScreenSizeChange(nsPresContext *aPresContext) - { - if (aPresContext) { - nsIPresShell* presShell = aPresContext->GetPresShell(); -- bool fontInflationWasEnabled = presShell->FontSizeInflationEnabled(); -- presShell->NotifyFontSizeInflationEnabledIsDirty(); -+ const bool fontInflationWasEnabled = presShell->FontSizeInflationEnabled(); -+ presShell->RecomputeFontSizeInflationEnabled(); - bool changed = false; -- if (presShell && presShell->FontSizeInflationEnabled() && -+ if (presShell->FontSizeInflationEnabled() && - presShell->FontSizeInflationMinTwips() != 0) { - aPresContext->ScreenSizeInchesForFontInflation(&changed); - } - - changed = changed || -- (fontInflationWasEnabled != presShell->FontSizeInflationEnabled()); -+ fontInflationWasEnabled != presShell->FontSizeInflationEnabled(); - if (changed) { - nsCOMPtr docShell = aPresContext->GetDocShell(); - if (docShell) { -diff --git layout/base/nsPresContext.cpp layout/base/nsPresContext.cpp -index 2fadaf78a29f..1ce0b492673d 100644 ---- layout/base/nsPresContext.cpp -+++ layout/base/nsPresContext.cpp -@@ -2123,6 +2123,10 @@ nsPresContext::MediaFeatureValuesChanged(nsRestyleHint aRestyleHint, - - mPendingViewportChange = false; - -+ if (!mShell || !mShell->DidInitialize()) { -+ return; -+ } -+ - if (mDocument->IsBeingUsedAsImage()) { - MOZ_ASSERT(mDocument->MediaQueryLists().isEmpty()); - return; -@@ -2130,7 +2134,7 @@ nsPresContext::MediaFeatureValuesChanged(nsRestyleHint aRestyleHint, - - mDocument->NotifyMediaFeatureValuesChanged(); - -- MOZ_ASSERT(nsContentUtils::IsSafeToRunScript()); -+ MOZ_DIAGNOSTIC_ASSERT(nsContentUtils::IsSafeToRunScript()); - - // Media query list listeners should be notified from a queued task - // (in HTML5 terms), although we also want to notify them on certain diff --git a/www/waterfox/files/patch-bug1413741 b/www/waterfox/files/patch-bug1413741 deleted file mode 100644 index 28e94186d836..000000000000 --- a/www/waterfox/files/patch-bug1413741 +++ /dev/null @@ -1,25 +0,0 @@ -commit bd17df85baf4 -Author: Andrea Marchesini -Date: Tue Nov 14 08:18:41 2017 +0100 - - Bug 1413741 - Improve the use of XHR.mProxy in workers after the dispatching of sync OpenRunnable, r=smaug a=gchang - - --HG-- - extra : source : 063022b93ec40d00601a21b92525a4285f984484 ---- - dom/xhr/XMLHttpRequestWorker.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git dom/xhr/XMLHttpRequestWorker.cpp dom/xhr/XMLHttpRequestWorker.cpp -index c337bb258767..9954da23493f 100644 ---- dom/xhr/XMLHttpRequestWorker.cpp -+++ dom/xhr/XMLHttpRequestWorker.cpp -@@ -1895,7 +1895,7 @@ XMLHttpRequestWorker::Open(const nsACString& aMethod, - ++mProxy->mOpenCount; - runnable->Dispatch(Terminating, aRv); - if (aRv.Failed()) { -- if (!--mProxy->mOpenCount) { -+ if (mProxy && !--mProxy->mOpenCount) { - ReleaseProxy(); - } - diff --git a/www/waterfox/files/patch-bug1414292 b/www/waterfox/files/patch-bug1414292 deleted file mode 100644 index 77100836514f..000000000000 --- a/www/waterfox/files/patch-bug1414292 +++ /dev/null @@ -1,171 +0,0 @@ -commit e66612be968f -Author: Boris Zbarsky -Date: Tue Nov 7 15:36:16 2017 -0500 - - Bug 1414292. Update to HTML spec changes for cross-origin object property enumerability. r=peterv - - Updates to https://github.com/whatwg/html/pull/3186 - - Includes the changes from https://github.com/w3c/web-platform-tests/pull/8045 - - MozReview-Commit-ID: 5vEo1QGPufE ---- - js/xpconnect/wrappers/FilteringWrapper.cpp | 9 ++++--- - .../cross-origin-objects.html.ini | 10 ------- - .../cross-origin-objects/cross-origin-objects.html | 31 +++++++++++----------- - 3 files changed, 22 insertions(+), 28 deletions(-) - -diff --git js/xpconnect/wrappers/FilteringWrapper.cpp js/xpconnect/wrappers/FilteringWrapper.cpp -index 1e986c734cde..4c9db40cdd5d 100644 ---- js/xpconnect/wrappers/FilteringWrapper.cpp -+++ js/xpconnect/wrappers/FilteringWrapper.cpp -@@ -223,9 +223,12 @@ CrossOriginXrayWrapper::getPropertyDescriptor(JSContext* cx, - // All properties on cross-origin DOM objects are |own|. - desc.object().set(wrapper); - -- // All properties on cross-origin DOM objects are non-enumerable and -- // "configurable". Any value attributes are read-only. -- desc.attributesRef() &= ~JSPROP_ENUMERATE; -+ // All properties on cross-origin DOM objects are "configurable". Any -+ // value attributes are read-only. Indexed properties are enumerable, -+ // but nothing else is. -+ if (!JSID_IS_INT(id)) { -+ desc.attributesRef() &= ~JSPROP_ENUMERATE; -+ } - desc.attributesRef() &= ~JSPROP_PERMANENT; - if (!desc.getter() && !desc.setter()) - desc.attributesRef() |= JSPROP_READONLY; -diff --git testing/web-platform/meta/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini testing/web-platform/meta/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini -deleted file mode 100644 -index 6c5e683863e9..000000000000 ---- testing/web-platform/meta/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini -+++ /dev/null -@@ -1,10 +0,0 @@ --[cross-origin-objects.html] -- type: testharness -- [[[GetOwnProperty\]\] - Property descriptors for cross-origin properties should be set up correctly] -- expected: FAIL -- -- [Can only enumerate safelisted properties] -- expected: FAIL -- -- [[[OwnPropertyKeys\]\] should return all properties from cross-origin objects] -- expected: FAIL -diff --git testing/web-platform/tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html testing/web-platform/tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html -index 06d96b11372d..f79f7ce4ae51 100644 ---- testing/web-platform/tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html -+++ testing/web-platform/tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html -@@ -184,17 +184,20 @@ addTest(function() { - }, "[[GetOwnProperty]] - Properties on cross-origin objects should be reported |own|"); - - function checkPropertyDescriptor(desc, propName, expectWritable) { -- var isSymbol = (typeof(propName) == "symbol"); -+ const isSymbol = typeof(propName) === "symbol"; -+ const isArrayIndexPropertyName = !isSymbol && !isNaN(parseInt(propName, 10)); - propName = String(propName); - assert_true(isObject(desc), "property descriptor for " + propName + " should exist"); - assert_equals(desc.configurable, true, "property descriptor for " + propName + " should be configurable"); -- if (isSymbol) { -- assert_equals(desc.enumerable, false, "symbol-property descriptor for " + propName + " should not be enumerable"); -- assert_true("value" in desc, -- "property descriptor for " + propName + " should be a value descriptor"); -- assert_equals(desc.value, undefined, -+ if (!isArrayIndexPropertyName) { -+ assert_equals(desc.enumerable, false, "property descriptor for " + propName + " should not be enumerable"); -+ if(isSymbol) { -+ assert_true("value" in desc, -+ "property descriptor for " + propName + " should be a value descriptor"); -+ assert_equals(desc.value, undefined, - "symbol-named cross-origin visible prop " + propName + - " should come back as undefined"); -+ } - } else { - assert_equals(desc.enumerable, true, "property descriptor for " + propName + " should be enumerable"); - } -@@ -265,16 +268,15 @@ addTest(function() { - let i = 0; - for (var prop in C) { - i++; -- assert_true(whitelistedWindowPropNames.includes(prop), prop + " is not safelisted for a cross-origin Window"); -+ assert_true(whitelistedWindowIndices.includes(prop), prop + " is not safelisted for a cross-origin Window"); - } -- assert_equals(i, whitelistedWindowPropNames.length, "Enumerate all safelisted cross-origin Window properties"); -+ assert_equals(i, whitelistedWindowIndices.length, "Enumerate all enumerable safelisted cross-origin Window properties"); - i = 0; - for (var prop in C.location) { - i++; -- assert_true(whitelistedLocationPropNames.includes(prop), prop + " is not safelisted for a cross-origin Location"); - } -- assert_equals(i, whitelistedLocationPropNames.length, "Enumerate all safelisted cross-origin Location properties"); --}, "Can only enumerate safelisted properties"); -+ assert_equals(i, 0, "There's nothing to enumerate for cross-origin Location properties"); -+}, "Can only enumerate safelisted enumerable properties"); - - /* - * [[OwnPropertyKeys]] -@@ -285,14 +287,13 @@ addTest(function() { - whitelistedWindowPropNames, - "Object.getOwnPropertyNames() gives the right answer for cross-origin Window"); - assert_array_equals(Object.keys(C).sort(), -- whitelistedWindowPropNames, -+ whitelistedWindowIndices, - "Object.keys() gives the right answer for cross-origin Window"); - assert_array_equals(Object.getOwnPropertyNames(C.location).sort(), - whitelistedLocationPropNames, - "Object.getOwnPropertyNames() gives the right answer for cross-origin Location"); -- assert_array_equals(Object.keys(C.location).sort(), -- whitelistedLocationPropNames, -- "Object.keys() gives the right answer for cross-origin Location"); -+ assert_equals(Object.keys(C.location).length, 0, -+ "Object.keys() gives the right answer for cross-origin Location"); - }, "[[OwnPropertyKeys]] should return all properties from cross-origin objects"); - - addTest(function() { -commit 25f3d350f097 -Author: Boris Zbarsky -Date: Tue Nov 7 16:55:29 2017 -0500 - - Bug 1414292 followup. Indexed properties are enumerable on Window per spec, and thus we fix the CLOSED TREE. - - MozReview-Commit-ID: 6Q76VqwSiEx ---- - js/xpconnect/tests/mochitest/test_bug862380.html | 21 ++++++++++++++++----- - 1 file changed, 16 insertions(+), 5 deletions(-) - -diff --git js/xpconnect/tests/mochitest/test_bug862380.html js/xpconnect/tests/mochitest/test_bug862380.html -index 0d3fb7329358..eb7cd99c3080 100644 ---- js/xpconnect/tests/mochitest/test_bug862380.html -+++ js/xpconnect/tests/mochitest/test_bug862380.html -@@ -13,16 +13,27 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=862380 - /** Test for Bug 862380 **/ - SimpleTest.waitForExplicitFinish(); - function go() { -- checkNotEnumerable($('ifr').contentWindow); -- checkNotEnumerable($('ifr').contentWindow.location); -+ checkNotEnumerable($('ifr').contentWindow, true); -+ checkNotEnumerable($('ifr').contentWindow.location, false); - SimpleTest.finish(); - } - -- function checkNotEnumerable(obj) { -+function checkNotEnumerable(obj, isWindow) { - try { -- is(Object.keys(obj).length, 0, "Object.keys gives empty array"); -+ const expectedWindow = ["0"]; -+ const expectedLocation = []; -+ const expected = isWindow ? expectedWindow : expectedLocation; -+ is(Object.keys(obj).length, expected.length, -+ "Object.keys gives right array length"); -+ var actual = []; - for (var i in obj) -- ok(false, "Enumerated something: " + i); -+ actual.push(i); -+ is(actual.length, expected.length, -+ "Enumeration sees the right number of props"); -+ actual.sort(); -+ expected.sort(); -+ for (var i = 0; i < actual.length; ++i) -+ is(actual[i], expected[i], "Arrays should be the same " + i); - } catch (e) { - ok(false, "threw: " + e); - } diff --git a/www/waterfox/files/patch-bug1414425 b/www/waterfox/files/patch-bug1414425 deleted file mode 100644 index 4ae66b3a662a..000000000000 --- a/www/waterfox/files/patch-bug1414425 +++ /dev/null @@ -1,231 +0,0 @@ -commit 8dce7d3eb6a3 -Author: Valentin Gosu -Date: Thu Nov 9 16:32:51 2017 +0100 - - Bug 1414425 - Make sure the appropriate triggeringPrincipal is set for a meta refresh. r=bz, a=gchang - - MozReview-Commit-ID: 4Kn6P4hnx74 - - --HG-- - extra : source : 229546747cbf04cf71a235275d7c2eb2520a298b ---- - browser/base/content/tab-content.js | 2 +- - .../content/test/general/browser_refreshBlocker.js | 2 +- - docshell/base/nsDocShell.cpp | 28 +++++++++++++++------- - docshell/base/nsDocShell.h | 12 +++++++--- - docshell/base/nsIRefreshURI.idl | 23 ++++++++++++++---- - 5 files changed, 50 insertions(+), 17 deletions(-) - -diff --git browser/base/content/tab-content.js browser/base/content/tab-content.js -index 4d85ada0321b..5497a1cc208d 100644 ---- browser/base/content/tab-content.js -+++ browser/base/content/tab-content.js -@@ -995,7 +995,7 @@ var RefreshBlocker = { - - let URI = Services.io.newURI(data.URI); - -- refreshURI.forceRefreshURI(URI, data.delay, true); -+ refreshURI.forceRefreshURI(URI, null, data.delay, true); - } - }, - -diff --git browser/base/content/test/general/browser_refreshBlocker.js browser/base/content/test/general/browser_refreshBlocker.js -index cd82cf40b479..4a280d4cb12b 100644 ---- browser/base/content/test/general/browser_refreshBlocker.js -+++ browser/base/content/test/general/browser_refreshBlocker.js -@@ -20,7 +20,7 @@ async function attemptFakeRefresh(browser, expectRefresh) { - await ContentTask.spawn(browser, expectRefresh, async function(contentExpectRefresh) { - let URI = docShell.QueryInterface(Ci.nsIWebNavigation).currentURI; - let refresher = docShell.QueryInterface(Ci.nsIRefreshURI); -- refresher.refreshURI(URI, 0, false, true); -+ refresher.refreshURI(URI, null, 0, false, true); - - Assert.equal(refresher.refreshPending, contentExpectRefresh, - "Got the right refreshPending state"); -diff --git docshell/base/nsDocShell.cpp docshell/base/nsDocShell.cpp -index 3ded70a66fe8..83cb87dd8255 100644 ---- docshell/base/nsDocShell.cpp -+++ docshell/base/nsDocShell.cpp -@@ -6831,7 +6831,8 @@ nsDocShell::ScrollByPages(int32_t aNumPages) - //***************************************************************************** - - NS_IMETHODIMP --nsDocShell::RefreshURI(nsIURI* aURI, int32_t aDelay, bool aRepeat, -+nsDocShell::RefreshURI(nsIURI* aURI, nsIPrincipal* aPrincipal, -+ int32_t aDelay, bool aRepeat, - bool aMetaRefresh) - { - NS_ENSURE_ARG(aURI); -@@ -6860,7 +6861,7 @@ nsDocShell::RefreshURI(nsIURI* aURI, int32_t aDelay, bool aRepeat, - } - - nsCOMPtr refreshTimer = -- new nsRefreshTimer(this, aURI, aDelay, aRepeat, aMetaRefresh); -+ new nsRefreshTimer(this, aURI, aPrincipal, aDelay, aRepeat, aMetaRefresh); - - uint32_t busyFlags = 0; - GetBusyFlags(&busyFlags); -@@ -6891,6 +6892,7 @@ nsDocShell::RefreshURI(nsIURI* aURI, int32_t aDelay, bool aRepeat, - - nsresult - nsDocShell::ForceRefreshURIFromTimer(nsIURI* aURI, -+ nsIPrincipal* aPrincipal, - int32_t aDelay, - bool aMetaRefresh, - nsITimer* aTimer) -@@ -6911,11 +6913,11 @@ nsDocShell::ForceRefreshURIFromTimer(nsIURI* aURI, - } - } - -- return ForceRefreshURI(aURI, aDelay, aMetaRefresh); -+ return ForceRefreshURI(aURI, aPrincipal, aDelay, aMetaRefresh); - } - - NS_IMETHODIMP --nsDocShell::ForceRefreshURI(nsIURI* aURI, int32_t aDelay, bool aMetaRefresh) -+nsDocShell::ForceRefreshURI(nsIURI* aURI, nsIPrincipal* aPrincipal, int32_t aDelay, bool aMetaRefresh) - { - NS_ENSURE_ARG(aURI); - -@@ -6963,6 +6965,13 @@ nsDocShell::ForceRefreshURI(nsIURI* aURI, int32_t aDelay, bool aMetaRefresh) - loadInfo->SetLoadType(nsIDocShellLoadInfo::loadRefresh); - } - -+ // If the principal is null, the refresh will have a triggeringPrincipal -+ // derived from the referrer URI, or will be set to the system principal -+ // if there is no refererrer. See LoadURI() -+ if (aPrincipal) { -+ loadInfo->SetTriggeringPrincipal(aPrincipal); -+ } -+ - /* - * LoadURI(...) will cancel all refresh timers... This causes the - * Timer and its refreshData instance to be released... -@@ -7203,7 +7212,7 @@ nsDocShell::SetupRefreshURIFromHeader(nsIURI* aBaseURI, - return NS_ERROR_FAILURE; - } - -- rv = RefreshURI(uri, seconds * 1000, false, true); -+ rv = RefreshURI(uri, aPrincipal, seconds * 1000, false, true); - } - } - } -@@ -13793,9 +13802,12 @@ nsDocShell::SetLayoutHistoryState(nsILayoutHistoryState* aLayoutHistoryState) - return NS_OK; - } - --nsRefreshTimer::nsRefreshTimer(nsDocShell* aDocShell, nsIURI* aURI, -+nsRefreshTimer::nsRefreshTimer(nsDocShell* aDocShell, -+ nsIURI* aURI, -+ nsIPrincipal* aPrincipal, - int32_t aDelay, bool aRepeat, bool aMetaRefresh) -- : mDocShell(aDocShell), mURI(aURI), mDelay(aDelay), mRepeat(aRepeat), -+ : mDocShell(aDocShell), mURI(aURI), mPrincipal(aPrincipal), -+ mDelay(aDelay), mRepeat(aRepeat), - mMetaRefresh(aMetaRefresh) - { - } -@@ -13822,7 +13834,7 @@ nsRefreshTimer::Notify(nsITimer* aTimer) - // Get the delay count to determine load type - uint32_t delay = 0; - aTimer->GetDelay(&delay); -- mDocShell->ForceRefreshURIFromTimer(mURI, delay, mMetaRefresh, aTimer); -+ mDocShell->ForceRefreshURIFromTimer(mURI, mPrincipal, delay, mMetaRefresh, aTimer); - } - return NS_OK; - } -diff --git docshell/base/nsDocShell.h docshell/base/nsDocShell.h -index f805deaa2edf..57fc63fe5795 100644 ---- docshell/base/nsDocShell.h -+++ docshell/base/nsDocShell.h -@@ -114,8 +114,12 @@ class nsRefreshTimer : public nsITimerCallback - , public nsINamed - { - public: -- nsRefreshTimer(nsDocShell* aDocShell, nsIURI* aURI, int32_t aDelay, -- bool aRepeat, bool aMetaRefresh); -+ nsRefreshTimer(nsDocShell* aDocShell, -+ nsIURI* aURI, -+ nsIPrincipal* aPrincipal, -+ int32_t aDelay, -+ bool aRepeat, -+ bool aMetaRefresh); - - NS_DECL_THREADSAFE_ISUPPORTS - NS_DECL_NSITIMERCALLBACK -@@ -125,6 +129,7 @@ public: - - RefPtr mDocShell; - nsCOMPtr mURI; -+ nsCOMPtr mPrincipal; - int32_t mDelay; - bool mRepeat; - bool mMetaRefresh; -@@ -259,7 +264,8 @@ public: - // ForceRefreshURI method on nsIRefreshURI, but makes sure to take - // the timer involved out of mRefreshURIList if it's there. - // aTimer must not be null. -- nsresult ForceRefreshURIFromTimer(nsIURI* aURI, int32_t aDelay, -+ nsresult ForceRefreshURIFromTimer(nsIURI* aURI, nsIPrincipal* aPrincipal, -+ int32_t aDelay, - bool aMetaRefresh, nsITimer* aTimer); - - friend class OnLinkClickEvent; -diff --git docshell/base/nsIRefreshURI.idl docshell/base/nsIRefreshURI.idl -index f872d8b7f5cf..3e85e4c516c6 100644 ---- docshell/base/nsIRefreshURI.idl -+++ docshell/base/nsIRefreshURI.idl -@@ -18,23 +18,33 @@ interface nsIRefreshURI : nsISupports { - * queued and executed when the current load finishes. - * - * @param aUri The uri to refresh. -+ * @param aPrincipal The triggeringPrincipal for the refresh load -+ * May be null, in which case a principal will be built based on the -+ * referrer URI of the previous docshell load, or will use the system -+ * principal when there is no referrer. - * @param aMillis The number of milliseconds to wait. - * @param aRepeat Flag to indicate if the uri is to be - * repeatedly refreshed every aMillis milliseconds. - * @param aMetaRefresh Flag to indicate if this is a Meta refresh. - */ -- void refreshURI(in nsIURI aURI, in long aMillis, in boolean aRepeat, -+ void refreshURI(in nsIURI aURI, in nsIPrincipal aPrincipal, -+ in long aMillis, in boolean aRepeat, - in boolean aMetaRefresh); - - /** - * Loads a URI immediately as if it were a refresh. - * - * @param aURI The URI to refresh. -+ * @param aPrincipal The triggeringPrincipal for the refresh load -+ * May be null, in which case a principal will be built based on the -+ * referrer URI of the previous docshell load, or will use the system -+ * principal when there is no referrer. - * @param aMillis The number of milliseconds by which this refresh would - * be delayed if it were not being forced. - * @param aMetaRefresh Flag to indicate if this is a meta refresh. - */ -- void forceRefreshURI(in nsIURI aURI, in long aMillis, in boolean aMetaRefresh); -+ void forceRefreshURI(in nsIURI aURI, in nsIPrincipal aPrincipal, -+ in long aMillis, in boolean aMetaRefresh); - - /** - * Checks the passed in channel to see if there is a refresh header, -@@ -57,10 +67,15 @@ interface nsIRefreshURI : nsISupports { - * the current page finishes loading. - * - * @param aBaseURI base URI to resolve refresh uri with. -- * @param principal the associated principal -+ * @param aPrincipal The triggeringPrincipal for the refresh load -+ * May be null, in which case a principal will be built based on the -+ * referrer URI of the previous docshell load, or will use the system -+ * principal when there is no referrer. - * @param aHeader The meta refresh header string. - */ -- void setupRefreshURIFromHeader(in nsIURI aBaseURI, in nsIPrincipal principal, in ACString aHeader); -+ void setupRefreshURIFromHeader(in nsIURI aBaseURI, -+ in nsIPrincipal principal, -+ in ACString aHeader); - - /** - * Cancels all timer loads. diff --git a/www/waterfox/files/patch-bug1414452 b/www/waterfox/files/patch-bug1414452 deleted file mode 100644 index 695ea3e848a9..000000000000 --- a/www/waterfox/files/patch-bug1414452 +++ /dev/null @@ -1,70 +0,0 @@ -commit 24a8b8309514 -Author: Olli Pettay -Date: Tue Nov 28 16:17:17 2017 +0200 - - Bug 1414452 - Clear dirAutoSetBy properties iteratively. r=peterv, a=abillings - - --HG-- - extra : source : 157a15cd5ecc8706b502f78c51e79b58ac59eaf0 ---- - dom/base/DirectionalityUtils.cpp | 23 +++++++++++++---------- - 1 file changed, 13 insertions(+), 10 deletions(-) - -diff --git dom/base/DirectionalityUtils.cpp dom/base/DirectionalityUtils.cpp -index fb443e23688c..f132c8970fe7 100644 ---- dom/base/DirectionalityUtils.cpp -+++ dom/base/DirectionalityUtils.cpp -@@ -419,7 +419,7 @@ class nsTextNodeDirectionalityMap - - nsTextNodeDirectionalityMap* map = - reinterpret_cast(aPropertyValue); -- map->EnsureMapIsClear(textNode); -+ map->EnsureMapIsClear(); - delete map; - } - -@@ -548,11 +548,11 @@ private: - return OpRemove; - } - -- static nsCheapSetOperator ClearEntry(nsPtrHashKey* aEntry, void* aData) -+ static nsCheapSetOperator TakeEntries(nsPtrHashKey* aEntry, void* aData) - { -- Element* rootNode = aEntry->GetKey(); -- rootNode->ClearHasDirAutoSet(); -- rootNode->DeleteProperty(nsGkAtoms::dirAutoSetBy); -+ AutoTArray* entries = -+ static_cast*>(aData); -+ entries->AppendElement(aEntry->GetKey()); - return OpRemove; - } - -@@ -568,12 +568,15 @@ public: - mElements.EnumerateEntries(ResetNodeDirection, &data); - } - -- void EnsureMapIsClear(nsINode* aTextNode) -+ void EnsureMapIsClear() - { - AutoRestore restore(mElementToBeRemoved); -- DebugOnly clearedEntries = -- mElements.EnumerateEntries(ClearEntry, aTextNode); -- MOZ_ASSERT(clearedEntries == 0, "Map should be empty already"); -+ AutoTArray entries; -+ mElements.EnumerateEntries(TakeEntries, &entries); -+ for (Element* el : entries) { -+ el->ClearHasDirAutoSet(); -+ el->DeleteProperty(nsGkAtoms::dirAutoSetBy); -+ } - } - - static void RemoveElementFromMap(nsTextNode* aTextNode, Element* aElement) -@@ -613,7 +616,7 @@ public: - static void EnsureMapIsClearFor(nsINode* aTextNode) - { - if (aTextNode->HasTextNodeDirectionalityMap()) { -- GetDirectionalityMap(aTextNode)->EnsureMapIsClear(aTextNode); -+ GetDirectionalityMap(aTextNode)->EnsureMapIsClear(); - } - } - }; diff --git a/www/waterfox/files/patch-bug1414945 b/www/waterfox/files/patch-bug1414945 deleted file mode 100644 index 3b57e971dc90..000000000000 --- a/www/waterfox/files/patch-bug1414945 +++ /dev/null @@ -1,43 +0,0 @@ -commit 26740772e0c9 -Author: Philip Chimento -Date: Mon Nov 6 15:49:15 2017 -0800 - - Bug 1414945 - Don't use TimeDuration in static initializer. r=jandem - - On Darwin this would cause a race between two static initializers. - - --HG-- - extra : rebase_source : 0547c4018334f7112022f1893c5f36a47dc14501 ---- - js/src/shell/js.cpp | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git js/src/shell/js.cpp js/src/shell/js.cpp -index afb4990ecc0f..f8f81446c7ae 100644 ---- js/src/shell/js.cpp -+++ js/src/shell/js.cpp -@@ -150,7 +150,7 @@ static const size_t gMaxStackSize = 128 * sizeof(size_t) * 1024; - * Limit the timeout to 30 minutes to prevent an overflow on platfoms - * that represent the time internally in microseconds using 32-bit int. - */ --static const TimeDuration MAX_TIMEOUT_INTERVAL = TimeDuration::FromSeconds(1800.0); -+static const double MAX_TIMEOUT_SECONDS = 1800.0; - - // SharedArrayBuffer and Atomics are enabled by default (tracking Firefox). - #define SHARED_MEMORY_DEFAULT 1 -@@ -3852,6 +3852,7 @@ Sleep_fn(JSContext* cx, unsigned argc, Value* vp) - } - - duration = TimeDuration::FromSeconds(Max(0.0, t_secs)); -+ const TimeDuration MAX_TIMEOUT_INTERVAL = TimeDuration::FromSeconds(MAX_TIMEOUT_SECONDS); - if (duration > MAX_TIMEOUT_INTERVAL) { - JS_ReportErrorASCII(cx, "Excessive sleep interval"); - return false; -@@ -4019,6 +4020,7 @@ SetTimeoutValue(JSContext* cx, double t) - JS_ReportErrorASCII(cx, "timeout is not a number"); - return false; - } -+ const TimeDuration MAX_TIMEOUT_INTERVAL = TimeDuration::FromSeconds(MAX_TIMEOUT_SECONDS); - if (TimeDuration::FromSeconds(t) > MAX_TIMEOUT_INTERVAL) { - JS_ReportErrorASCII(cx, "Excessive timeout value"); - return false; diff --git a/www/waterfox/files/patch-bug1415291 b/www/waterfox/files/patch-bug1415291 deleted file mode 100644 index e4bdf334753c..000000000000 --- a/www/waterfox/files/patch-bug1415291 +++ /dev/null @@ -1,52 +0,0 @@ -commit e5ec8a70ef9e -Author: Luke Wagner -Date: Sat Dec 2 12:33:29 2017 -0500 - - Bug 1415291 - Baldr: factor out ToTableIndex(). r=bbouvier, a=gchang ---- - js/src/wasm/WasmJS.cpp | 18 ++++++++++++++++-- - 1 file changed, 16 insertions(+), 2 deletions(-) - -diff --git js/src/wasm/WasmJS.cpp js/src/wasm/WasmJS.cpp -index 1d07b0d065fe..482de9788221 100644 ---- js/src/wasm/WasmJS.cpp -+++ js/src/wasm/WasmJS.cpp -@@ -1694,6 +1694,20 @@ const JSPropertySpec WasmTableObject::properties[] = - JS_PS_END - }; - -+static bool -+ToTableIndex(JSContext* cx, HandleValue v, const Table& table, const char* noun, uint32_t* index) -+{ -+ if (!ToNonWrappingUint32(cx, v, UINT32_MAX, "Table", noun, index)) -+ return false; -+ -+ if (*index >= table.length()) { -+ JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_WASM_BAD_UINT32, "Table", noun); -+ return false; -+ } -+ -+ return true; -+} -+ - /* static */ bool - WasmTableObject::getImpl(JSContext* cx, const CallArgs& args) - { -@@ -1701,7 +1715,7 @@ WasmTableObject::getImpl(JSContext* cx, const CallArgs& args) - const Table& table = tableObj->table(); - - uint32_t index; -- if (!ToNonWrappingUint32(cx, args.get(0), table.length() - 1, "Table", "get index", &index)) -+ if (!ToTableIndex(cx, args.get(0), table, "get index", &index)) - return false; - - ExternalTableElem& elem = table.externalArray()[index]; -@@ -1740,7 +1754,7 @@ WasmTableObject::setImpl(JSContext* cx, const CallArgs& args) - return false; - - uint32_t index; -- if (!ToNonWrappingUint32(cx, args.get(0), table.length() - 1, "Table", "set index", &index)) -+ if (!ToTableIndex(cx, args.get(0), table, "set index", &index)) - return false; - - RootedFunction value(cx); diff --git a/www/waterfox/files/patch-bug1415441 b/www/waterfox/files/patch-bug1415441 deleted file mode 100644 index c51fed60cfea..000000000000 --- a/www/waterfox/files/patch-bug1415441 +++ /dev/null @@ -1,22 +0,0 @@ -commit 8b02d6d479da -Author: JW Wang -Date: Fri Dec 8 10:01:18 2017 +0800 - - Bug 1415441 - Eagerly init gMediaDecoderLog to debug crash. r=cpearce, a=jcristau ---- - dom/media/MediaDecoder.cpp | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git dom/media/MediaDecoder.cpp dom/media/MediaDecoder.cpp -index cbf97ddf084d..5de31894d9d9 100644 ---- dom/media/MediaDecoder.cpp -+++ dom/media/MediaDecoder.cpp -@@ -280,6 +280,8 @@ void - MediaDecoder::InitStatics() - { - MOZ_ASSERT(NS_IsMainThread()); -+ // Eagerly init gMediaDecoderLog to work around bug 1415441. -+ MOZ_LOG(gMediaDecoderLog, LogLevel::Info, ("MediaDecoder::InitStatics")); - } - - NS_IMPL_ISUPPORTS(MediaMemoryTracker, nsIMemoryReporter) diff --git a/www/waterfox/files/patch-bug1415582 b/www/waterfox/files/patch-bug1415582 deleted file mode 100644 index 47faa0eb70d1..000000000000 --- a/www/waterfox/files/patch-bug1415582 +++ /dev/null @@ -1,34 +0,0 @@ -commit 1ab98367b3c1 -Author: Randell Jesup -Date: Wed Nov 8 11:00:24 2017 -0500 - - Bug 1415582 - Mirror changes done to Encoder InitDone to decoder. r=bwc, a=gchang - - --HG-- - extra : source : 833205c1f498bed137fb2e0a06d14ef31e3c0609 ---- - media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.h media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.h -index b8067a278f18..50189c488df1 100644 ---- media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.h -+++ media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.h -@@ -449,7 +449,7 @@ private: - class InitDoneCallback : public GetGMPVideoDecoderCallback - { - public: -- explicit InitDoneCallback(WebrtcGmpVideoDecoder* aDecoder, -+ explicit InitDoneCallback(const RefPtr& aDecoder, - const RefPtr& aInitDone) - : mDecoder(aDecoder), - mInitDone(aInitDone) -@@ -465,7 +465,7 @@ private: - } - - private: -- WebrtcGmpVideoDecoder* mDecoder; -+ RefPtr mDecoder; - RefPtr mInitDone; - }; - diff --git a/www/waterfox/files/patch-bug1415598 b/www/waterfox/files/patch-bug1415598 deleted file mode 100644 index 6fd819610ca9..000000000000 --- a/www/waterfox/files/patch-bug1415598 +++ /dev/null @@ -1,58 +0,0 @@ -commit 63db080ae5cb -Author: Marco Bonardo -Date: Thu Dec 7 15:28:41 2017 +0100 - - Bug 1415598. r=gijs, a=jcristau - - --HG-- - extra : source : 94f1fb1043a81e619d7b73d48a86d66d1cf4eebc ---- - toolkit/components/places/History.cpp | 15 ++++++++++++++- - 1 file changed, 14 insertions(+), 1 deletion(-) - -diff --git toolkit/components/places/History.cpp toolkit/components/places/History.cpp -index 94755d3bdde5..b3618c065601 100644 ---- toolkit/components/places/History.cpp -+++ toolkit/components/places/History.cpp -@@ -1955,6 +1955,7 @@ History::InitMemoryReporter() - NS_IMETHODIMP - History::NotifyVisited(nsIURI* aURI) - { -+ MOZ_ASSERT(NS_IsMainThread()); - NS_ENSURE_ARG(aURI); - - nsAutoScriptBlocker scriptBlocker; -@@ -2565,6 +2566,7 @@ NS_IMETHODIMP - History::RegisterVisitedCallback(nsIURI* aURI, - Link* aLink) - { -+ MOZ_ASSERT(NS_IsMainThread()); - NS_ASSERTION(aURI, "Must pass a non-null URI!"); - if (XRE_IsContentProcess()) { - NS_PRECONDITION(aLink, "Must pass a non-null Link!"); -@@ -2594,7 +2596,16 @@ History::RegisterVisitedCallback(nsIURI* aURI, - if (NS_FAILED(rv) || !aLink) { - // Remove our array from the hashtable so we don't keep it around. - MOZ_ASSERT(key == mObservers.GetEntry(aURI), "The URIs hash mutated!"); -- mObservers.RemoveEntry(key); -+ // In some case calling RemoveEntry on the key obtained by PutEntry -+ // crashes for currently unknown reasons. Our suspect is that something -+ // between PutEntry and this call causes a nested loop that either removes -+ // the entry or reallocs the hash. -+ // TODO (Bug 1412647): we must figure the root cause for these issues and -+ // remove this stop-gap crash fix. -+ key = mObservers.GetEntry(aURI); -+ if (key) { -+ mObservers.RemoveEntry(key); -+ } - return rv; - } - } -@@ -2626,6 +2637,7 @@ NS_IMETHODIMP - History::UnregisterVisitedCallback(nsIURI* aURI, - Link* aLink) - { -+ MOZ_ASSERT(NS_IsMainThread()); - // TODO: aURI is sometimes null - see bug 548685 - NS_ASSERTION(aURI, "Must pass a non-null URI!"); - NS_ASSERTION(aLink, "Must pass a non-null Link object!"); diff --git a/www/waterfox/files/patch-bug1415883 b/www/waterfox/files/patch-bug1415883 deleted file mode 100644 index 3d862aa510cd..000000000000 --- a/www/waterfox/files/patch-bug1415883 +++ /dev/null @@ -1,44 +0,0 @@ -commit a4d70f676839 -Author: Jan de Mooij -Date: Wed Nov 29 16:03:12 2017 +0100 - - Bug 1415883 - Fix some issues in ShiftFromList. r=arai, a=abillings - - --HG-- - extra : source : 2467d71d0e0de20103ce61cdd221461a48e4591b ---- - js/src/vm/List-inl.h | 4 ++-- - js/src/vm/NativeObject.cpp | 2 ++ - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git js/src/builtin/Stream.cpp js/src/builtin/Stream.cpp -index e53f811a02e1..28cafd6c06d6 100644 ---- js/src/builtin/Stream.cpp -+++ js/src/builtin/Stream.cpp -@@ -357,11 +357,11 @@ ShiftFromList(JSContext* cx, HandleNativeObject list) - Rooted entry(cx, &list->getDenseElement(0).toObject().as()); - if (!list->tryShiftDenseElements(1)) { - list->moveDenseElements(0, 1, length - 1); -+ list->setDenseInitializedLength(length - 1); - list->shrinkElements(cx, length - 1); - } - -- list->setDenseInitializedLength(length - 1); -- -+ MOZ_ASSERT(list->getDenseInitializedLength() == length - 1); - return entry; - } - -diff --git js/src/vm/NativeObject.cpp js/src/vm/NativeObject.cpp -index 780bc74192dc..deab37154af2 100644 ---- js/src/vm/NativeObject.cpp -+++ js/src/vm/NativeObject.cpp -@@ -1000,6 +1000,8 @@ void - NativeObject::shrinkElements(JSContext* cx, uint32_t reqCapacity) - { - MOZ_ASSERT(canHaveNonEmptyElements()); -+ MOZ_ASSERT(reqCapacity >= getDenseInitializedLength()); -+ - if (denseElementsAreCopyOnWrite()) - MOZ_CRASH(); - diff --git a/www/waterfox/files/patch-bug1415946 b/www/waterfox/files/patch-bug1415946 deleted file mode 100644 index 9bc3ea846532..000000000000 --- a/www/waterfox/files/patch-bug1415946 +++ /dev/null @@ -1,33 +0,0 @@ -commit 9a1395f61292 -Author: Emilio Cobos Álvarez -Date: Fri Nov 10 17:33:00 2017 -0500 - - Bug 1415946 - Make font-variant-alternates: historical-forms parsing ascii case insensitive. r=jfkthame, a=sledru - - MozReview-Commit-ID: 42bKZEgysdW ---- - servo/components/style/properties/longhand/font.mako.rs | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git servo/components/style/properties/longhand/font.mako.rs servo/components/style/properties/longhand/font.mako.rs -index b880cd335321..91d2c254d219 100644 ---- servo/components/style/properties/longhand/font.mako.rs -+++ servo/components/style/properties/longhand/font.mako.rs -@@ -1450,6 +1450,8 @@ ${helpers.single_keyword_system("font-kerning", - /// annotation() ] - pub fn parse<'i, 't>(_context: &ParserContext, input: &mut Parser<'i, 't>) - -> Result> { -+ #[allow(unused_imports)] use std::ascii::AsciiExt; -+ - let mut alternates = Vec::new(); - if input.try(|input| input.expect_ident_matching("normal")).is_ok() { - return Ok(SpecifiedValue::Value(VariantAlternatesList(alternates.into_boxed_slice()))); -@@ -1468,7 +1470,7 @@ ${helpers.single_keyword_system("font-kerning", - // FIXME: remove clone() when lifetimes are non-lexical - match input.next()?.clone() { - Token::Ident(ref ident) => { -- if *ident == "historical-forms" { -+ if ident.eq_ignore_ascii_case("historical-forms") { - check_if_parsed!(HISTORICAL_FORMS); - alternates.push(VariantAlternates::HistoricalForms); - Ok(()) diff --git a/www/waterfox/files/patch-bug1416307 b/www/waterfox/files/patch-bug1416307 deleted file mode 100644 index 7d77ad317937..000000000000 --- a/www/waterfox/files/patch-bug1416307 +++ /dev/null @@ -1,94 +0,0 @@ -commit 1159955c684f -Author: Samael Wang -Date: Tue Feb 6 13:28:30 2018 -0500 - - Bug 1416307 - Set triggeringPrincipal to current document's principal, if aPrincipal is not given. r=bz a=ritu - - MozReview-Commit-ID: 8lxKFeUlyzq - - --HG-- - extra : source : 9fcf48189000ab8ee16f236be57c9659c7243b42 ---- - docshell/base/nsDocShell.cpp | 21 +++++++++++---------- - docshell/base/nsIRefreshURI.idl | 15 ++++++--------- - 2 files changed, 17 insertions(+), 19 deletions(-) - -diff --git docshell/base/nsDocShell.cpp docshell/base/nsDocShell.cpp -index fa3707880772..84a9086a1a00 100644 ---- docshell/base/nsDocShell.cpp -+++ docshell/base/nsDocShell.cpp -@@ -6396,9 +6396,17 @@ nsDocShell::ForceRefreshURI(nsIURI* aURI, nsIPrincipal* aPrincipal, int32_t aDel - */ - loadInfo->SetReferrer(mCurrentURI); - -- /* Don't ever "guess" on which principal to use to avoid picking -- * the current principal. -- */ -+ // Set the triggering pricipal to aPrincipal if available, or current -+ // document's principal otherwise. -+ nsCOMPtr principal = aPrincipal; -+ if (!principal) { -+ nsCOMPtr doc = GetDocument(); -+ if (!doc) { -+ return NS_ERROR_FAILURE; -+ } -+ principal = doc->NodePrincipal(); -+ } -+ loadInfo->SetTriggeringPrincipal(principal); - loadInfo->SetPrincipalIsExplicit(true); - - /* Check if this META refresh causes a redirection -@@ -6426,13 +6434,6 @@ nsDocShell::ForceRefreshURI(nsIURI* aURI, nsIPrincipal* aPrincipal, int32_t aDel - loadInfo->SetLoadType(nsIDocShellLoadInfo::loadRefresh); - } - -- // If the principal is null, the refresh will have a triggeringPrincipal -- // derived from the referrer URI, or will be set to the system principal -- // if there is no refererrer. See LoadURI() -- if (aPrincipal) { -- loadInfo->SetTriggeringPrincipal(aPrincipal); -- } -- - /* - * LoadURI(...) will cancel all refresh timers... This causes the - * Timer and its refreshData instance to be released... -diff --git docshell/base/nsIRefreshURI.idl docshell/base/nsIRefreshURI.idl -index 3e85e4c516c6..77d8fd660674 100644 ---- docshell/base/nsIRefreshURI.idl -+++ docshell/base/nsIRefreshURI.idl -@@ -19,9 +19,8 @@ interface nsIRefreshURI : nsISupports { - * - * @param aUri The uri to refresh. - * @param aPrincipal The triggeringPrincipal for the refresh load -- * May be null, in which case a principal will be built based on the -- * referrer URI of the previous docshell load, or will use the system -- * principal when there is no referrer. -+ * May be null, in which case the principal of current document will be -+ * applied. - * @param aMillis The number of milliseconds to wait. - * @param aRepeat Flag to indicate if the uri is to be - * repeatedly refreshed every aMillis milliseconds. -@@ -36,9 +35,8 @@ interface nsIRefreshURI : nsISupports { - * - * @param aURI The URI to refresh. - * @param aPrincipal The triggeringPrincipal for the refresh load -- * May be null, in which case a principal will be built based on the -- * referrer URI of the previous docshell load, or will use the system -- * principal when there is no referrer. -+ * May be null, in which case the principal of current document will be -+ * applied. - * @param aMillis The number of milliseconds by which this refresh would - * be delayed if it were not being forced. - * @param aMetaRefresh Flag to indicate if this is a meta refresh. -@@ -68,9 +66,8 @@ interface nsIRefreshURI : nsISupports { - * - * @param aBaseURI base URI to resolve refresh uri with. - * @param aPrincipal The triggeringPrincipal for the refresh load -- * May be null, in which case a principal will be built based on the -- * referrer URI of the previous docshell load, or will use the system -- * principal when there is no referrer. -+ * May be null, in which case the principal of current document will be -+ * applied. - * @param aHeader The meta refresh header string. - */ - void setupRefreshURIFromHeader(in nsIURI aBaseURI, diff --git a/www/waterfox/files/patch-bug1416529 b/www/waterfox/files/patch-bug1416529 deleted file mode 100644 index a88f4e28941e..000000000000 --- a/www/waterfox/files/patch-bug1416529 +++ /dev/null @@ -1,101 +0,0 @@ -commit 4cfa1b84d80c -Author: Nicholas Hurley -Date: Fri Feb 2 11:03:08 2018 -0800 - - Bug 1416529 r=mcmanus a=ritu - MozReview-Commit-ID: CD1l5vLB4yy - - --HG-- - extra : amend_source : 44c6368af20b158091a90c627ea4f206871dfa9d ---- - netwerk/protocol/http/Http2Session.cpp | 18 +++++++++--------- - netwerk/protocol/http/Http2Stream.cpp | 14 ++++++++++++++ - netwerk/protocol/http/Http2Stream.h | 1 + - 3 files changed, 24 insertions(+), 9 deletions(-) - -diff --git netwerk/protocol/http/Http2Session.cpp netwerk/protocol/http/Http2Session.cpp -index 9fd021065742..622c1657027a 100644 ---- netwerk/protocol/http/Http2Session.cpp -+++ netwerk/protocol/http/Http2Session.cpp -@@ -1136,6 +1136,15 @@ Http2Session::CleanupStream(Http2Stream *aStream, nsresult aResult, - return; - } - -+ Http2PushedStream *pushSource = aStream->PushSource(); -+ if (pushSource) { -+ // aStream is a synthetic attached to an even push -+ MOZ_ASSERT(pushSource->GetConsumerStream() == aStream); -+ MOZ_ASSERT(!aStream->StreamID()); -+ MOZ_ASSERT(!(pushSource->StreamID() & 0x1)); -+ aStream->ClearPushSource(); -+ } -+ - if (aStream->DeferCleanup(aResult)) { - LOG3(("Http2Session::CleanupStream 0x%X deferred\n", aStream->StreamID())); - return; -@@ -1146,15 +1155,6 @@ Http2Session::CleanupStream(Http2Stream *aStream, nsresult aResult, - return; - } - -- Http2PushedStream *pushSource = aStream->PushSource(); -- if (pushSource) { -- // aStream is a synthetic attached to an even push -- MOZ_ASSERT(pushSource->GetConsumerStream() == aStream); -- MOZ_ASSERT(!aStream->StreamID()); -- MOZ_ASSERT(!(pushSource->StreamID() & 0x1)); -- pushSource->SetConsumerStream(nullptr); -- } -- - // don't reset a stream that has recevied a fin or rst - if (!aStream->RecvdFin() && !aStream->RecvdReset() && aStream->StreamID() && - !(mInputFrameFinal && (aStream == mInputFrameDataStream))) { // !(recvdfin with mark pending) -diff --git netwerk/protocol/http/Http2Stream.cpp netwerk/protocol/http/Http2Stream.cpp -index d2f304b5ed7b..95674d018ab1 100644 ---- netwerk/protocol/http/Http2Stream.cpp -+++ netwerk/protocol/http/Http2Stream.cpp -@@ -112,12 +112,22 @@ Http2Stream::Http2Stream(nsAHttpTransaction *httpTransaction, - - Http2Stream::~Http2Stream() - { -+ ClearPushSource(); - ClearTransactionsBlockedOnTunnel(); - mStreamID = Http2Session::kDeadStreamID; - - LOG3(("Http2Stream::~Http2Stream %p", this)); - } - -+void -+Http2Stream::ClearPushSource() -+{ -+ if (mPushSource) { -+ mPushSource->SetConsumerStream(nullptr); -+ mPushSource = nullptr; -+ } -+} -+ - // ReadSegments() is used to write data down the socket. Generally, HTTP - // request data is pulled from the approriate transaction and - // converted to HTTP/2 data. Sometimes control data like a window-update is -@@ -1135,6 +1145,10 @@ Http2Stream::ConvertPushHeaders(Http2Decompressor *decompressor, - void - Http2Stream::Close(nsresult reason) - { -+ // In case we are connected to a push, make sure the push knows we are closed, -+ // so it doesn't try to give us any more DATA that comes on it after our close. -+ ClearPushSource(); -+ - mTransaction->Close(reason); - } - -diff --git netwerk/protocol/http/Http2Stream.h netwerk/protocol/http/Http2Stream.h -index 3412eb56f809..29f98163c4ac 100644 ---- netwerk/protocol/http/Http2Stream.h -+++ netwerk/protocol/http/Http2Stream.h -@@ -56,6 +56,7 @@ public: - - uint32_t StreamID() { return mStreamID; } - Http2PushedStream *PushSource() { return mPushSource; } -+ void ClearPushSource(); - - stateType HTTPState() { return mState; } - void SetHTTPState(stateType val) { mState = val; } diff --git a/www/waterfox/files/patch-bug1417661 b/www/waterfox/files/patch-bug1417661 deleted file mode 100644 index a9ac6a9835cb..000000000000 --- a/www/waterfox/files/patch-bug1417661 +++ /dev/null @@ -1,37 +0,0 @@ -commit ad9b162b2a97 -Author: Emilio Cobos Álvarez -Date: Tue Nov 28 19:27:49 2017 +0100 - - Bug 1417661 - Use the correct parent style for inheriting from first-letter if the container is an anonymous box. r=bz, a=gchang - - MozReview-Commit-ID: 1B7DrAVa274 - - --HG-- - extra : source : 2be23298d4872b9d1677b6014683f554d857966f ---- - layout/base/nsCSSFrameConstructor.cpp | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git layout/base/nsCSSFrameConstructor.cpp layout/base/nsCSSFrameConstructor.cpp -index f9994b31e649..0da45cc33544 100644 ---- layout/base/nsCSSFrameConstructor.cpp -+++ layout/base/nsCSSFrameConstructor.cpp -@@ -11666,13 +11666,15 @@ nsCSSFrameConstructor::CreateLetterFrame(nsContainerFrame* aBlockFrame, - - if (sc) { - if (sc->IsServo() && parentFrame->IsLineFrame()) { -- ServoStyleContext* parentStyleIgnoringFirstLine = -- aBlockFrame->StyleContext()->AsServo(); -+ nsIFrame* parentIgnoringFirstLine = -+ nsFrame::CorrectStyleParentFrame(aBlockFrame, -+ nsCSSPseudoElements::firstLetter); -+ - sc = - mPresShell->StyleSet()->AsServo()->ReparentStyleContext( - sc->AsServo(), - parentStyleContext->AsServo(), -- parentStyleIgnoringFirstLine, -+ parentIgnoringFirstLine->StyleContext()->AsServo(), - parentStyleContext->AsServo(), - blockContent->AsElement()); - } diff --git a/www/waterfox/files/patch-bug1417751 b/www/waterfox/files/patch-bug1417751 deleted file mode 100644 index aea1eddf0f5b..000000000000 --- a/www/waterfox/files/patch-bug1417751 +++ /dev/null @@ -1,379 +0,0 @@ -commit e889dbe68557 -Author: lochang -Date: Wed Nov 29 10:43:13 2017 +0800 - - Bug 1417751 - Implement a new value inner-spin-button to -moz-appearance on all platforms except Android. r=mats - - MozReview-Commit-ID: 7jpLCOWZA2x - - --HG-- - extra : rebase_source : d2a4d160d26e6f6996ed1cb3a673576236b8ef23 ---- - devtools/shared/css/generated/properties-db.js | 2 ++ - gfx/src/nsThemeConstants.h | 3 ++ - layout/style/nsCSSKeywordList.h | 1 + - layout/style/nsCSSProps.cpp | 1 + - widget/cocoa/nsNativeThemeCocoa.mm | 9 +++-- - widget/gtk/gtk2drawing.c | 49 ++++++++++++++++++++++++++ - widget/gtk/gtk3drawing.cpp | 38 ++++++++++++++++++++ - widget/gtk/gtkdrawing.h | 1 + - widget/gtk/nsNativeThemeGTK.cpp | 5 +++ - widget/headless/HeadlessThemeGTK.cpp | 2 ++ - widget/windows/nsNativeThemeWin.cpp | 9 +++++ - 11 files changed, 118 insertions(+), 2 deletions(-) - -diff --git devtools/shared/css/generated/properties-db.js devtools/shared/css/generated/properties-db.js -index 6d12ca38f14d..b87366998a16 100644 ---- devtools/shared/css/generated/properties-db.js -+++ devtools/shared/css/generated/properties-db.js -@@ -236,6 +236,7 @@ exports.CSS_PROPERTIES = { - "groupbox", - "inherit", - "initial", -+ "inner-spin-button", - "listbox", - "listitem", - "menuarrow", -@@ -3458,6 +3459,7 @@ exports.CSS_PROPERTIES = { - "inline-grid", - "inline-start", - "inline-table", -+ "inner-spin-button", - "inset", - "inside", - "inter-character", -diff --git gfx/src/nsThemeConstants.h gfx/src/nsThemeConstants.h -index 439ada6e80a6..0688222ef7ea 100644 ---- gfx/src/nsThemeConstants.h -+++ gfx/src/nsThemeConstants.h -@@ -135,6 +135,9 @@ enum ThemeWidgetType : uint8_t { - // A tooltip - NS_THEME_TOOLTIP, - -+ // A inner-spin control -+ NS_THEME_INNER_SPIN_BUTTON, -+ - // A spin control (up/down control for time/date pickers) - NS_THEME_SPINNER, - -diff --git layout/style/nsCSSKeywordList.h layout/style/nsCSSKeywordList.h -index f184592ad7c6..ff448c87b761 100644 ---- layout/style/nsCSSKeywordList.h -+++ layout/style/nsCSSKeywordList.h -@@ -683,6 +683,7 @@ CSS_KEY(tabpanel, tabpanel) - CSS_KEY(tab-scroll-arrow-back, tab_scroll_arrow_back) - CSS_KEY(tab-scroll-arrow-forward, tab_scroll_arrow_forward) - CSS_KEY(tooltip, tooltip) -+CSS_KEY(inner-spin-button, inner_spin_button) - CSS_KEY(spinner, spinner) - CSS_KEY(spinner-upbutton, spinner_upbutton) - CSS_KEY(spinner-downbutton, spinner_downbutton) -diff --git layout/style/nsCSSProps.cpp layout/style/nsCSSProps.cpp -index b7815699afa6..5c1ab8e8aae3 100644 ---- layout/style/nsCSSProps.cpp -+++ layout/style/nsCSSProps.cpp -@@ -786,6 +786,7 @@ const KTableEntry nsCSSProps::kAppearanceKTable[] = { - { eCSSKeyword_tab_scroll_arrow_back, NS_THEME_TAB_SCROLL_ARROW_BACK }, - { eCSSKeyword_tab_scroll_arrow_forward, NS_THEME_TAB_SCROLL_ARROW_FORWARD }, - { eCSSKeyword_tooltip, NS_THEME_TOOLTIP }, -+ { eCSSKeyword_inner_spin_button, NS_THEME_INNER_SPIN_BUTTON }, - { eCSSKeyword_spinner, NS_THEME_SPINNER }, - { eCSSKeyword_spinner_upbutton, NS_THEME_SPINNER_UPBUTTON }, - { eCSSKeyword_spinner_downbutton, NS_THEME_SPINNER_DOWNBUTTON }, -diff --git widget/cocoa/nsNativeThemeCocoa.mm widget/cocoa/nsNativeThemeCocoa.mm -index 760279b3a972..a4066b030897 100644 ---- widget/cocoa/nsNativeThemeCocoa.mm -+++ widget/cocoa/nsNativeThemeCocoa.mm -@@ -2551,9 +2551,11 @@ nsNativeThemeCocoa::DrawWidgetBackground(gfxContext* aContext, - eventState, aFrame); - break; - -- case NS_THEME_SPINNER: { -+ case NS_THEME_INNER_SPIN_BUTTON: { -+ case NS_THEME_SPINNER: -+ bool isSpinner = (aWidgetType == NS_THEME_SPINNER); - nsIContent* content = aFrame->GetContent(); -- if (content->IsHTMLElement()) { -+ if (isSpinner && content->IsHTMLElement()) { - // In HTML the theming for the spin buttons is drawn individually into - // their own backgrounds instead of being drawn into the background of - // their spinner parent as it is for XUL. -@@ -3454,6 +3456,7 @@ nsNativeThemeCocoa::GetMinimumWidgetSize(nsPresContext* aPresContext, - break; - } - -+ case NS_THEME_INNER_SPIN_BUTTON: - case NS_THEME_SPINNER: - case NS_THEME_SPINNER_UPBUTTON: - case NS_THEME_SPINNER_DOWNBUTTON: -@@ -3838,6 +3841,7 @@ nsNativeThemeCocoa::ThemeSupportsWidget(nsPresContext* aPresContext, nsIFrame* a - case NS_THEME_BUTTON_ARROW_DOWN: - case NS_THEME_BUTTON_BEVEL: - case NS_THEME_TOOLBARBUTTON: -+ case NS_THEME_INNER_SPIN_BUTTON: - case NS_THEME_SPINNER: - case NS_THEME_SPINNER_UPBUTTON: - case NS_THEME_SPINNER_DOWNBUTTON: -@@ -3978,6 +3982,7 @@ nsNativeThemeCocoa::WidgetAppearanceDependsOnWindowFocus(uint8_t aWidgetType) - case NS_THEME_MENUITEM: - case NS_THEME_MENUSEPARATOR: - case NS_THEME_TOOLTIP: -+ case NS_THEME_INNER_SPIN_BUTTON: - case NS_THEME_SPINNER: - case NS_THEME_SPINNER_UPBUTTON: - case NS_THEME_SPINNER_DOWNBUTTON: -diff --git widget/gtk/gtk2drawing.c widget/gtk/gtk2drawing.c -index 9b523c8f893e..e7f9d32a4d1c 100644 ---- widget/gtk/gtk2drawing.c -+++ widget/gtk/gtk2drawing.c -@@ -1365,6 +1365,51 @@ moz_gtk_scrollbar_thumb_paint(WidgetNodeType widget, - return MOZ_GTK_SUCCESS; - } - -+static gint -+moz_gtk_inner_spin_paint(GdkDrawable* drawable, GdkRectangle* rect, -+ GtkWidgetState* state, -+ GtkTextDirection direction) -+{ -+ GdkRectangle arrow_rect; -+ GtkStateType state_type = ConvertGtkState(state); -+ GtkShadowType shadow_type = state_type == GTK_STATE_ACTIVE ? -+ GTK_SHADOW_IN : GTK_SHADOW_OUT; -+ GtkStyle* style; -+ -+ ensure_spin_widget(); -+ style = gSpinWidget->style; -+ gtk_widget_set_direction(gSpinWidget, direction); -+ -+ TSOffsetStyleGCs(style, rect->x, rect->y); -+ gtk_paint_box(style, drawable, state_type, shadow_type, NULL, gSpinWidget, -+ "spinbutton", rect->x, rect->y, rect->width, rect->height); -+ -+ /* hard code these values */ -+ arrow_rect.width = 6; -+ arrow_rect.height = 6; -+ -+ // align spin to the left -+ arrow_rect.x = rect->x; -+ -+ // up button -+ arrow_rect.y = rect->y + (rect->height - arrow_rect.height) / 2 - 3; -+ gtk_paint_arrow(style, drawable, state_type, shadow_type, NULL, -+ gSpinWidget, "spinbutton", -+ GTK_ARROW_UP, TRUE, -+ arrow_rect.x, arrow_rect.y, -+ arrow_rect.width, arrow_rect.height); -+ -+ // down button -+ arrow_rect.y = rect->y + (rect->height - arrow_rect.height) / 2 + 3; -+ gtk_paint_arrow(style, drawable, state_type, shadow_type, NULL, -+ gSpinWidget, "spinbutton", -+ GTK_ARROW_DOWN, -+ arrow_rect.x, arrow_rect.y, -+ arrow_rect.width, arrow_rect.height); -+ -+ return MOZ_GTK_SUCCESS; -+} -+ - static gint - moz_gtk_spin_paint(GdkDrawable* drawable, GdkRectangle* rect, - GtkTextDirection direction) -@@ -2984,6 +3029,7 @@ moz_gtk_get_widget_border(WidgetNodeType widget, gint* left, gint* top, - case MOZ_GTK_TOOLBAR_SEPARATOR: - case MOZ_GTK_MENUSEPARATOR: - /* These widgets have no borders.*/ -+ case MOZ_GTK_INNER_SPIN_BUTTON: - case MOZ_GTK_SPINBUTTON: - case MOZ_GTK_WINDOW: - case MOZ_GTK_RESIZER: -@@ -3247,6 +3293,9 @@ moz_gtk_widget_paint(WidgetNodeType widget, GdkDrawable* drawable, - return moz_gtk_scale_thumb_paint(drawable, rect, cliprect, state, - (GtkOrientation) flags, direction); - break; -+ case MOZ_GTK_INNER_SPIN_BUTTON: -+ return moz_gtk_inner_spin_paint(drawable, rect, state, direction); -+ break; - case MOZ_GTK_SPINBUTTON: - return moz_gtk_spin_paint(drawable, rect, direction); - break; -diff --git widget/gtk/gtk3drawing.cpp widget/gtk/gtk3drawing.cpp -index 2969be818e96..a3a1478bfe85 100644 ---- widget/gtk/gtk3drawing.cpp -+++ widget/gtk/gtk3drawing.cpp -@@ -797,6 +797,40 @@ moz_gtk_scrollbar_thumb_paint(WidgetNodeType widget, - return MOZ_GTK_SUCCESS; - } - -+static gint -+moz_gtk_inner_spin_paint(cairo_t *cr, GdkRectangle* rect, -+ GtkWidgetState* state, -+ GtkTextDirection direction) -+{ -+ GtkStyleContext* style = GetStyleContext(MOZ_GTK_SPINBUTTON, direction, -+ GetStateFlagsFromGtkWidgetState(state)); -+ -+ gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height); -+ gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height); -+ -+ /* hard code these values */ -+ GdkRectangle arrow_rect; -+ arrow_rect.width = 6; -+ arrow_rect.height = 6; -+ -+ // align spin to the left -+ arrow_rect.x = rect->x; -+ -+ // up button -+ arrow_rect.y = rect->y + (rect->height - arrow_rect.height) / 2 - 3; -+ gtk_render_arrow(style, cr, ARROW_UP, -+ arrow_rect.x, arrow_rect.y, -+ arrow_rect.width); -+ -+ // down button -+ arrow_rect.y = rect->y + (rect->height - arrow_rect.height) / 2 + 3; -+ gtk_render_arrow(style, cr, ARROW_DOWN, -+ arrow_rect.x, arrow_rect.y, -+ arrow_rect.width); -+ -+ return MOZ_GTK_SUCCESS; -+} -+ - static gint - moz_gtk_spin_paint(cairo_t *cr, GdkRectangle* rect, - GtkTextDirection direction) -@@ -2283,6 +2317,7 @@ moz_gtk_get_widget_border(WidgetNodeType widget, gint* left, gint* top, - case MOZ_GTK_TOOLBAR_SEPARATOR: - case MOZ_GTK_MENUSEPARATOR: - /* These widgets have no borders.*/ -+ case MOZ_GTK_INNER_SPIN_BUTTON: - case MOZ_GTK_SPINBUTTON: - case MOZ_GTK_WINDOW: - case MOZ_GTK_RESIZER: -@@ -2845,6 +2880,9 @@ moz_gtk_widget_paint(WidgetNodeType widget, cairo_t *cr, - return moz_gtk_scale_thumb_paint(cr, rect, state, - (GtkOrientation) flags, direction); - break; -+ case MOZ_GTK_INNER_SPIN_BUTTON: -+ return moz_gtk_inner_spin_paint(cr, rect, state, direction); -+ break; - case MOZ_GTK_SPINBUTTON: - return moz_gtk_spin_paint(cr, rect, direction); - break; -diff --git widget/gtk/gtkdrawing.h widget/gtk/gtkdrawing.h -index 59fd1256e22d..4e796d0237d9 100644 ---- widget/gtk/gtkdrawing.h -+++ widget/gtk/gtkdrawing.h -@@ -175,6 +175,7 @@ typedef enum { - MOZ_GTK_SCALE_THUMB_HORIZONTAL, - MOZ_GTK_SCALE_THUMB_VERTICAL, - /* Paints a GtkSpinButton */ -+ MOZ_GTK_INNER_SPIN_BUTTON, - MOZ_GTK_SPINBUTTON, - MOZ_GTK_SPINBUTTON_UP, - MOZ_GTK_SPINBUTTON_DOWN, -diff --git widget/gtk/nsNativeThemeGTK.cpp widget/gtk/nsNativeThemeGTK.cpp -index c38c9e1eed3d..953aead6cdd4 100644 ---- widget/gtk/nsNativeThemeGTK.cpp -+++ widget/gtk/nsNativeThemeGTK.cpp -@@ -439,6 +439,9 @@ nsNativeThemeGTK::GetGtkWidgetAndState(uint8_t aWidgetType, nsIFrame* aFrame, - case NS_THEME_SCROLLBARTHUMB_HORIZONTAL: - aGtkWidgetType = MOZ_GTK_SCROLLBAR_THUMB_HORIZONTAL; - break; -+ case NS_THEME_INNER_SPIN_BUTTON: -+ aGtkWidgetType = MOZ_GTK_INNER_SPIN_BUTTON; -+ break; - case NS_THEME_SPINNER: - aGtkWidgetType = MOZ_GTK_SPINBUTTON; - break; -@@ -1657,6 +1660,7 @@ nsNativeThemeGTK::GetMinimumWidgetSize(nsPresContext* aPresContext, - aResult->width = separator_width; - } - break; -+ case NS_THEME_INNER_SPIN_BUTTON: - case NS_THEME_SPINNER: - // hard code these sizes - aResult->width = 14; -@@ -1844,6 +1848,7 @@ nsNativeThemeGTK::ThemeSupportsWidget(nsPresContext* aPresContext, - case NS_THEME_TAB_SCROLL_ARROW_BACK: - case NS_THEME_TAB_SCROLL_ARROW_FORWARD: - case NS_THEME_TOOLTIP: -+ case NS_THEME_INNER_SPIN_BUTTON: - case NS_THEME_SPINNER: - case NS_THEME_SPINNER_UPBUTTON: - case NS_THEME_SPINNER_DOWNBUTTON: -diff --git widget/windows/nsNativeThemeWin.cpp widget/windows/nsNativeThemeWin.cpp -index 5bbdc3aacc1e..bd6f76ca3e52 100644 ---- widget/windows/nsNativeThemeWin.cpp -+++ widget/windows/nsNativeThemeWin.cpp -@@ -682,6 +682,7 @@ nsresult nsNativeThemeWin::GetCachedMinimumWidgetSize(nsIFrame * aFrame, HANDLE - aResult->height = sz.cy; - - switch (aWidgetType) { -+ case NS_THEME_INNER_SPIN_BUTTON: - case NS_THEME_SPINNER_UPBUTTON: - case NS_THEME_SPINNER_DOWNBUTTON: - aResult->width++; -@@ -766,6 +767,7 @@ mozilla::Maybe nsNativeThemeWin::GetThemeClass(uint8_t aWidgetTy - case NS_THEME_SCALETHUMB_HORIZONTAL: - case NS_THEME_SCALETHUMB_VERTICAL: - return Some(eUXTrackbar); -+ case NS_THEME_INNER_SPIN_BUTTON: - case NS_THEME_SPINNER_UPBUTTON: - case NS_THEME_SPINNER_DOWNBUTTON: - return Some(eUXSpin); -@@ -1143,6 +1145,7 @@ nsNativeThemeWin::GetThemePartAndState(nsIFrame* aFrame, uint8_t aWidgetType, - } - return NS_OK; - } -+ case NS_THEME_INNER_SPIN_BUTTON: - case NS_THEME_SPINNER_UPBUTTON: - case NS_THEME_SPINNER_DOWNBUTTON: { - aPart = (aWidgetType == NS_THEME_SPINNER_UPBUTTON) ? -@@ -2718,6 +2721,7 @@ nsNativeThemeWin::ClassicThemeSupportsWidget(nsIFrame* aFrame, - case NS_THEME_SCALETHUMB_HORIZONTAL: - case NS_THEME_SCALETHUMB_VERTICAL: - case NS_THEME_MENULIST_BUTTON: -+ case NS_THEME_INNER_SPIN_BUTTON: - case NS_THEME_SPINNER_UPBUTTON: - case NS_THEME_SPINNER_DOWNBUTTON: - case NS_THEME_LISTBOX: -@@ -2873,6 +2877,7 @@ nsNativeThemeWin::ClassicGetMinimumWidgetSize(nsIFrame* aFrame, - (*aResult).width = ::GetSystemMetrics(SM_CXMENUCHECK); - (*aResult).height = ::GetSystemMetrics(SM_CYMENUCHECK); - break; -+ case NS_THEME_INNER_SPIN_BUTTON: - case NS_THEME_SPINNER_UPBUTTON: - case NS_THEME_SPINNER_DOWNBUTTON: - (*aResult).width = ::GetSystemMetrics(SM_CXVSCROLL); -@@ -3274,6 +3279,7 @@ nsresult nsNativeThemeWin::ClassicGetThemePartAndState(nsIFrame* aFrame, uint8_t - - return NS_OK; - } -+ case NS_THEME_INNER_SPIN_BUTTON: - case NS_THEME_SPINNER_UPBUTTON: - case NS_THEME_SPINNER_DOWNBUTTON: { - EventStates contentState = GetContentState(aFrame, aWidgetType); -@@ -3283,6 +3289,7 @@ nsresult nsNativeThemeWin::ClassicGetThemePartAndState(nsIFrame* aFrame, uint8_t - case NS_THEME_SPINNER_UPBUTTON: - aState = DFCS_SCROLLUP; - break; -+ case NS_THEME_INNER_SPIN_BUTTON: - case NS_THEME_SPINNER_DOWNBUTTON: - aState = DFCS_SCROLLDOWN; - break; -@@ -3583,6 +3590,7 @@ RENDER_AGAIN: - case NS_THEME_SCROLLBARBUTTON_DOWN: - case NS_THEME_SCROLLBARBUTTON_LEFT: - case NS_THEME_SCROLLBARBUTTON_RIGHT: -+ case NS_THEME_INNER_SPIN_BUTTON: - case NS_THEME_SPINNER_UPBUTTON: - case NS_THEME_SPINNER_DOWNBUTTON: - case NS_THEME_MENULIST_BUTTON: -@@ -3987,6 +3995,7 @@ nsNativeThemeWin::GetWidgetNativeDrawingFlags(uint8_t aWidgetType) - case NS_THEME_SCALE_VERTICAL: - case NS_THEME_SCALETHUMB_HORIZONTAL: - case NS_THEME_SCALETHUMB_VERTICAL: -+ case NS_THEME_INNER_SPIN_BUTTON: - case NS_THEME_SPINNER_UPBUTTON: - case NS_THEME_SPINNER_DOWNBUTTON: - case NS_THEME_LISTBOX: diff --git a/www/waterfox/files/patch-bug1417797 b/www/waterfox/files/patch-bug1417797 deleted file mode 100644 index e3e1fc5d44a3..000000000000 --- a/www/waterfox/files/patch-bug1417797 +++ /dev/null @@ -1,25 +0,0 @@ -commit 95077ef89979 -Author: Dan Minor -Date: Mon Nov 20 07:09:19 2017 -0500 - - Bug 1417797 - Stop callback in WebrtcGmpVideoDecoder::ReleaseGmp. r=jesup, a=gchang - - --HG-- - extra : source : d0eb2fe1a7389d40d1abdccbeeaef9c4b30ae7b1 ---- - media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.cpp | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.cpp media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.cpp -index 53212d888dcb..e3063ea3fefb 100644 ---- media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.cpp -+++ media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.cpp -@@ -923,6 +923,8 @@ int32_t - WebrtcGmpVideoDecoder::ReleaseGmp() - { - LOGD(("GMP Released:")); -+ RegisterDecodeCompleteCallback(nullptr); -+ - if (mGMPThread) { - mGMPThread->Dispatch( - WrapRunnableNM(&WebrtcGmpVideoDecoder::ReleaseGmp_g, diff --git a/www/waterfox/files/patch-bug1417869 b/www/waterfox/files/patch-bug1417869 deleted file mode 100644 index cc344f72dbc3..000000000000 --- a/www/waterfox/files/patch-bug1417869 +++ /dev/null @@ -1,42 +0,0 @@ -commit 22760bd00a04 -Author: JW Wang -Date: Fri Nov 24 11:14:51 2017 +0100 - - Bug 1417869. P2 - abort the load algorithm early if media not allowed to load. r=jya, a=sledru - - MozReview-Commit-ID: DUxyo4ywCPW ---- - dom/html/HTMLMediaElement.cpp | 13 +++++++------ - 1 file changed, 7 insertions(+), 6 deletions(-) - -diff --git dom/html/HTMLMediaElement.cpp dom/html/HTMLMediaElement.cpp -index 5d51851047cf..c2106402c661 100644 ---- dom/html/HTMLMediaElement.cpp -+++ dom/html/HTMLMediaElement.cpp -@@ -1956,6 +1956,13 @@ NS_IMETHODIMP HTMLMediaElement::Load() - - void HTMLMediaElement::DoLoad() - { -+ // Check if media is allowed for the docshell. -+ nsCOMPtr docShell = OwnerDoc()->GetDocShell(); -+ if (docShell && !docShell->GetAllowMedia()) { -+ LOG(LogLevel::Debug, ("%p Media not allowed", this)); -+ return; -+ } -+ - if (mIsRunningLoadMethod) { - return; - } -@@ -2497,12 +2504,6 @@ nsresult HTMLMediaElement::LoadResource() - mChannelLoader = nullptr; - } - -- // Check if media is allowed for the docshell. -- nsCOMPtr docShell = OwnerDoc()->GetDocShell(); -- if (docShell && !docShell->GetAllowMedia()) { -- return NS_ERROR_FAILURE; -- } -- - // Set the media element's CORS mode only when loading a resource - mCORSMode = AttrValueToCORSMode(GetParsedAttr(nsGkAtoms::crossorigin)); - diff --git a/www/waterfox/files/patch-bug1418009 b/www/waterfox/files/patch-bug1418009 deleted file mode 100644 index 2a9f5a7fd4fa..000000000000 --- a/www/waterfox/files/patch-bug1418009 +++ /dev/null @@ -1,28 +0,0 @@ -commit 068a8c4feb56 -Author: Oriol Brufau -Date: Fri Mar 16 16:58:36 2018 +0100 - - Bug 1418009 - Avoid speculative connections on prematurely inserted lazy tabs. r=dao, a=RyanVM - - MozReview-Commit-ID: 3T8PLBLEGNt - - --HG-- - extra : rebase_source : 5839f1ede2a3d939e8bad02520979a8911f69553 - extra : source : 6d67283033868a54d89a936ba5e336d9bad5c79c ---- - browser/components/sessionstore/SessionStore.jsm | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git browser/components/sessionstore/SessionStore.jsm browser/components/sessionstore/SessionStore.jsm -index dee998cbe7eb..88de8a64f0fc 100644 ---- browser/components/sessionstore/SessionStore.jsm -+++ browser/components/sessionstore/SessionStore.jsm -@@ -3547,7 +3547,7 @@ var SessionStoreInternal = { - * a tab to speculatively connect on mouse hover. - */ - speculativeConnectOnTabHover(tab) { -- if (this._restore_on_demand && !tab.__SS_connectionPrepared && tab.hasAttribute("pending")) { -+ if (tab.__SS_lazyData && !tab.__SS_connectionPrepared) { - let url = this.getLazyTabValue(tab, "url"); - let prepared = this.prepareConnectionToHost(url); - // This is used to test if a connection has been made beforehand. diff --git a/www/waterfox/files/patch-bug1418152 b/www/waterfox/files/patch-bug1418152 deleted file mode 100644 index d7634229aa8e..000000000000 --- a/www/waterfox/files/patch-bug1418152 +++ /dev/null @@ -1,36 +0,0 @@ -commit d7441ef15616 -Author: Cameron McCormack -Date: Sat Nov 18 00:47:57 2017 -0600 - - Bug 1418152 - servo: Merge #19263 - selectors: Allow white space in the brackets of an attribute selector (from heycam:attr-ws); r=SimonSapin a=sylvestre - - Source-Repo: https://github.com/servo/servo - Source-Revision: 7b886b4479763018ecad62aa6db96049732ca9ed - - --HG-- - extra : amend_source : 67e691f8caf4bc07a9ea0e33bd31286ae123f5ff - extra : transplant_source : %C6%FF%3A%13I%5E%B7%14%3C%F2%F7%CE%80%DB%08%16bh%60s ---- - servo/components/selectors/parser.rs | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git servo/components/selectors/parser.rs servo/components/selectors/parser.rs -index b020a04fd032..b7c421998530 100644 ---- servo/components/selectors/parser.rs -+++ servo/components/selectors/parser.rs -@@ -1306,6 +1306,15 @@ fn parse_attribute_selector<'i, 't, P, E, Impl>(parser: &P, input: &mut CssParse - { - let namespace; - let local_name; -+ -+ loop { -+ let position = input.position(); -+ if !matches!(input.next_including_whitespace(), Ok(&Token::WhiteSpace(_))) { -+ input.reset(position); -+ break -+ } -+ } -+ - match parse_qualified_name(parser, input, /* in_attr_selector = */ true)? { - None => return Err(ParseError::Custom(SelectorParseError::NoQualifiedNameInAttributeSelector)), - Some((_, None)) => unreachable!(), diff --git a/www/waterfox/files/patch-bug1418757 b/www/waterfox/files/patch-bug1418757 deleted file mode 100644 index 139fce6ec8c7..000000000000 --- a/www/waterfox/files/patch-bug1418757 +++ /dev/null @@ -1,169 +0,0 @@ -commit 1b3df31dd202 -Author: Gijs Kruitbosch -Date: Wed Nov 22 13:49:07 2017 +0000 - - Bug 1418757 - new tab button isn't adjacent to the last tab when customizing in customize mode, r=jaws a=gchang - - MozReview-Commit-ID: bQoNfDD2sX - - --HG-- - extra : histedit_source : 15b29e1c8e8ba295ecbd76d266de3611862a72c3 ---- - browser/base/content/tabbrowser.xml | 15 ++- - browser/components/customizableui/test/browser.ini | 1 + - .../test/browser_newtab_button_customizemode.js | 106 +++++++++++++++++++++ - 3 files changed, 121 insertions(+), 1 deletion(-) - -diff --git browser/base/content/tabbrowser.xml browser/base/content/tabbrowser.xml -index dc4560e0f5b2..a13df7715f2d 100644 ---- browser/base/content/tabbrowser.xml -+++ browser/base/content/tabbrowser.xml -@@ -5448,10 +5448,23 @@ - - - are never wrapped in s in customize mode, -+ // but the other items will be. - let sib = this.tabContainer.nextElementSibling; -+ if (isCustomizing) { -+ sib = sib && sib.firstElementChild; -+ } - while (sib && sib.hidden) { -- sib = sib.nextElementSibling; -+ if (isCustomizing) { -+ sib = sib.parentNode.nextElementSibling; -+ sib = sib && sib.firstElementChild; -+ } else { -+ sib = sib.nextElementSibling; -+ } - } -+ - const kAttr = "hasadjacentnewtabbutton"; - if (sib && sib.id == "new-tab-button") { - this.tabContainer.setAttribute(kAttr, "true"); -diff --git browser/components/customizableui/test/browser.ini browser/components/customizableui/test/browser.ini -index d5f5eaf2a113..b164a573f094 100644 ---- browser/components/customizableui/test/browser.ini -+++ browser/components/customizableui/test/browser.ini -@@ -164,6 +164,7 @@ tags = fullscreen - [browser_check_tooltips_in_navbar.js] - [browser_editcontrols_update.js] - subsuite = clipboard -+[browser_newtab_button_customizemode.js] - [browser_photon_customization_context_menus.js] - [browser_sidebar_toggle.js] - [browser_remote_tabs_button.js] -diff --git browser/components/customizableui/test/browser_newtab_button_customizemode.js browser/components/customizableui/test/browser_newtab_button_customizemode.js -new file mode 100644 -index 000000000000..da886fc47376 ---- /dev/null -+++ browser/components/customizableui/test/browser_newtab_button_customizemode.js -@@ -0,0 +1,106 @@ -+/* Any copyright is dedicated to the Public Domain. -+ * http://creativecommons.org/publicdomain/zero/1.0/ */ -+ -+"use strict"; -+ -+/** -+ * Tests in this file check that user customizations to the tabstrip show -+ * the correct type of new tab button while the tabstrip isn't overflowing. -+ */ -+ -+const kGlobalNewTabButton = document.getElementById("new-tab-button"); -+const kInnerNewTabButton = document.getAnonymousElementByAttribute(gBrowser.tabContainer, "anonid", "tabs-newtab-button"); -+ -+function assertNewTabButton(which) { -+ if (which == "global") { -+ isnot(kGlobalNewTabButton.getBoundingClientRect().width, 0, -+ "main new tab button should be visible"); -+ is(kInnerNewTabButton.getBoundingClientRect().width, 0, -+ "inner new tab button should be hidden"); -+ } else if (which == "inner") { -+ is(kGlobalNewTabButton.getBoundingClientRect().width, 0, -+ "main new tab button should be hidden"); -+ isnot(kInnerNewTabButton.getBoundingClientRect().width, 0, -+ "inner new tab button should be visible"); -+ } else { -+ ok(false, "Unexpected button: " + which); -+ } -+} -+ -+/** -+ * Add and remove items *after* the new tab button in customize mode. -+ */ -+add_task(async function addremove_after_newtab_customizemode() { -+ await startCustomizing(); -+ simulateItemDrag(document.getElementById("home-button"), -+ kGlobalNewTabButton.parentNode.nextElementSibling); -+ ok(gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"), -+ "tabs should have the adjacent newtab attribute"); -+ await endCustomizing(); -+ assertNewTabButton("inner"); -+ -+ await startCustomizing(); -+ simulateItemDrag(document.getElementById("home-button"), -+ document.getElementById("stop-reload-button").parentNode.nextElementSibling); -+ ok(gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"), -+ "tabs should still have the adjacent newtab attribute"); -+ await endCustomizing(); -+ assertNewTabButton("inner"); -+ ok(CustomizableUI.inDefaultState, "Should be in default state"); -+}); -+ -+/** -+ * Add and remove items *before* the new tab button in customize mode. -+ */ -+add_task(async function addremove_before_newtab_customizemode() { -+ await startCustomizing(); -+ simulateItemDrag(document.getElementById("home-button"), kGlobalNewTabButton); -+ ok(!gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"), -+ "tabs should no longer have the adjacent newtab attribute"); -+ await endCustomizing(); -+ assertNewTabButton("global"); -+ await startCustomizing(); -+ simulateItemDrag(document.getElementById("home-button"), -+ document.getElementById("stop-reload-button").parentNode.nextElementSibling); -+ ok(gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"), -+ "tabs should have the adjacent newtab attribute again"); -+ await endCustomizing(); -+ assertNewTabButton("inner"); -+ ok(CustomizableUI.inDefaultState, "Should be in default state"); -+}); -+ -+/** -+ * Add and remove items *after* the new tab button outside of customize mode. -+ */ -+add_task(async function addremove_after_newtab_api() { -+ CustomizableUI.addWidgetToArea("home-button", "TabsToolbar"); -+ ok(gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"), -+ "tabs should have the adjacent newtab attribute"); -+ assertNewTabButton("inner"); -+ -+ CustomizableUI.reset(); -+ ok(gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"), -+ "tabs should still have the adjacent newtab attribute"); -+ assertNewTabButton("inner"); -+ ok(CustomizableUI.inDefaultState, "Should be in default state"); -+ -+}); -+ -+/** -+ * Add and remove items *before* the new tab button outside of customize mode. -+ */ -+add_task(async function addremove_before_newtab_api() { -+ let index = CustomizableUI.getWidgetIdsInArea("TabsToolbar").indexOf("new-tab-button"); -+ CustomizableUI.addWidgetToArea("home-button", "TabsToolbar", index); -+ ok(!gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"), -+ "tabs should no longer have the adjacent newtab attribute"); -+ assertNewTabButton("global"); -+ -+ CustomizableUI.removeWidgetFromArea("home-button"); -+ ok(gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"), -+ "tabs should have the adjacent newtab attribute again"); -+ assertNewTabButton("inner"); -+ -+ CustomizableUI.reset(); -+ ok(CustomizableUI.inDefaultState, "Should be in default state"); -+}); diff --git a/www/waterfox/files/patch-bug1418854 b/www/waterfox/files/patch-bug1418854 deleted file mode 100644 index e707d06094ac..000000000000 --- a/www/waterfox/files/patch-bug1418854 +++ /dev/null @@ -1,102 +0,0 @@ -commit 1fe2b37624d6 -Author: Michal Novotny -Date: Wed Dec 6 20:48:06 2017 -0500 - - Bug 1418854 - Race condition in AutoClose. r=honzab, a=jcristau - - --HG-- - extra : source : 3e425d2e71df08dc944a26eaa41158522a75ff02 ---- - netwerk/base/AutoClose.h | 43 ++++++++++++++++++++++--------------------- - 1 file changed, 22 insertions(+), 21 deletions(-) - -diff --git netwerk/base/AutoClose.h netwerk/base/AutoClose.h -index 8c401071428f..43ab27133fdd 100644 ---- netwerk/base/AutoClose.h -+++ netwerk/base/AutoClose.h -@@ -8,6 +8,7 @@ - #define mozilla_net_AutoClose_h - - #include "nsCOMPtr.h" -+#include "mozilla/Mutex.h" - - namespace mozilla { namespace net { - -@@ -18,49 +19,48 @@ template - class AutoClose - { - public: -- AutoClose() { } -+ AutoClose() : mMutex("net::AutoClose.mMutex") { } - ~AutoClose(){ -- Close(); -+ CloseAndRelease(); - } - -- explicit operator bool() const -+ explicit operator bool() - { -+ MutexAutoLock lock(mMutex); - return mPtr; - } - - already_AddRefed forget() - { -+ MutexAutoLock lock(mMutex); - return mPtr.forget(); - } - - void takeOver(nsCOMPtr & rhs) - { -- Close(); -- mPtr = rhs.forget(); -- } -- -- void takeOver(AutoClose & rhs) -- { -- Close(); -- mPtr = rhs.mPtr.forget(); -+ already_AddRefed other = rhs.forget(); -+ TakeOverInternal(&other); - } - - void CloseAndRelease() - { -- Close(); -- mPtr = nullptr; -- } -- -- T* operator->() const MOZ_NO_ADDREF_RELEASE_ON_RETURN -- { -- return mPtr.operator->(); -+ TakeOverInternal(nullptr); - } - - private: -- void Close() -+ void TakeOverInternal(already_AddRefed *aOther) - { -- if (mPtr) { -- mPtr->Close(); -+ nsCOMPtr ptr; -+ { -+ MutexAutoLock lock(mMutex); -+ ptr.swap(mPtr); -+ if (aOther) { -+ mPtr = *aOther; -+ } -+ } -+ -+ if (ptr) { -+ ptr->Close(); - } - } - -@@ -68,6 +68,7 @@ private: - AutoClose(const AutoClose &) = delete; - - nsCOMPtr mPtr; -+ Mutex mMutex; - }; - - } // namespace net diff --git a/www/waterfox/files/patch-bug1418894 b/www/waterfox/files/patch-bug1418894 deleted file mode 100644 index b092b623b5b1..000000000000 --- a/www/waterfox/files/patch-bug1418894 +++ /dev/null @@ -1,244 +0,0 @@ -commit 408a8eddca66 -Author: Ted Campbell -Date: Tue Nov 28 22:52:34 2017 -0500 - - Bug 1418894 - Use marker values in XDR data to detect corruption. r=nbp a=gchang - - MozReview-Commit-ID: D6PxPBdgtPP - - --HG-- - extra : source : 3c5cc7786d922c70b937d1dbe57f0ce700c39551 ---- - js/src/jsfun.cpp | 4 ++++ - js/src/jsscript.cpp | 10 ++++++++++ - js/src/vm/Xdr.h | 12 ++++++++++++ - 3 files changed, 26 insertions(+) - -diff --git js/src/jsfun.cpp js/src/jsfun.cpp -index 234d0cc3438c..5a461c9230eb 100644 ---- js/src/jsfun.cpp -+++ js/src/jsfun.cpp -@@ -682,6 +682,10 @@ js::XDRInterpretedFunction(XDRState* xdr, HandleScope enclosingScope, - objp.set(fun); - } - -+ // Verify marker at end of function to detect buffer trunction. -+ if (!xdr->codeMarker(0x9E35CA1F)) -+ return false; -+ - return true; - } - -diff --git js/src/jsscript.cpp js/src/jsscript.cpp -index 1b31a0639644..88d6c7bc75b6 100644 ---- js/src/jsscript.cpp -+++ js/src/jsscript.cpp -@@ -808,6 +808,11 @@ js::XDRScript(XDRState* xdr, HandleScope scriptEnclosingScope, - if (mode == XDR_DECODE) - vector[i].init(scope); - } -+ -+ // Verify marker to detect data corruption after decoding scope data. A -+ // mismatch here indicates we will almost certainly crash in release. -+ if (!xdr->codeMarker(0x48922BAB)) -+ return false; - } - - /* -@@ -900,6 +905,11 @@ js::XDRScript(XDRState* xdr, HandleScope scriptEnclosingScope, - } - } - -+ // Verify marker to detect data corruption after decoding object data. A -+ // mismatch here indicates we will almost certainly crash in release. -+ if (!xdr->codeMarker(0xF83B989A)) -+ return false; -+ - if (ntrynotes != 0) { - JSTryNote* tnfirst = script->trynotes()->vector; - MOZ_ASSERT(script->trynotes()->length == ntrynotes); -diff --git js/src/vm/Xdr.h js/src/vm/Xdr.h -index 18fa1af8ab5b..0a6cbf01b50f 100644 ---- js/src/vm/Xdr.h -+++ js/src/vm/Xdr.h -@@ -307,6 +307,18 @@ class XDRState : public XDRCoderBase - return true; - } - -+ bool codeMarker(uint32_t magic) { -+ uint32_t actual = magic; -+ if (!codeUint32(&actual)) -+ return false; -+ if (actual != magic) { -+ // Fail in debug, but only soft-fail in release -+ MOZ_ASSERT(false, "Bad XDR marker"); -+ return fail(JS::TranscodeResult_Failure_BadDecode); -+ } -+ return true; -+ } -+ - bool codeBytes(void* bytes, size_t len) { - if (len == 0) - return true; - -commit 885c19e8e675 -Author: Ted Campbell -Date: Tue Nov 28 23:01:49 2017 -0500 - - Bug 1418894 - Harden XDR data decoding. r=nbp a=gchang - - This patch adds better error detection to XDR decoding to reduce memory - corruption in the event that XDR data is corrupt (which is not - *supposed* to happen). - - Add missing default cases. Make out-of-range values fail the decode by - asserting in debug, and returning a TranscodeError in release. Mix a - magic value into enum value before transcoding to buffer (to reduce - chance of garbage data being decoded). - - MozReview-Commit-ID: 1wPkho9dm8c - - --HG-- - extra : source : 484499ffcbbad636a904832cc90c56c016ad4582 ---- - js/src/jsapi.h | 2 +- - js/src/jsscript.cpp | 40 ++++++++++++++++++++++------------------ - js/src/shell/js.cpp | 4 ++-- - js/src/vm/Xdr.h | 8 ++++++-- - 4 files changed, 31 insertions(+), 23 deletions(-) - -diff --git js/src/jsapi.h js/src/jsapi.h -index 323396025b7a..c43a4c693778 100644 ---- js/src/jsapi.h -+++ js/src/jsapi.h -@@ -6420,7 +6420,7 @@ enum TranscodeResult - TranscodeResult_Failure_BadBuildId = TranscodeResult_Failure | 0x1, - TranscodeResult_Failure_RunOnceNotSupported = TranscodeResult_Failure | 0x2, - TranscodeResult_Failure_AsmJSNotSupported = TranscodeResult_Failure | 0x3, -- TranscodeResult_Failure_UnknownClassKind = TranscodeResult_Failure | 0x4, -+ TranscodeResult_Failure_BadDecode = TranscodeResult_Failure | 0x4, - TranscodeResult_Failure_WrongCompileOption = TranscodeResult_Failure | 0x5, - TranscodeResult_Failure_NotInterpretedFun = TranscodeResult_Failure | 0x6, - -diff --git js/src/jsscript.cpp js/src/jsscript.cpp -index eff03d909353..1b31a0639644 100644 ---- js/src/jsscript.cpp -+++ js/src/jsscript.cpp -@@ -92,24 +92,19 @@ js::XDRScriptConst(XDRState* xdr, MutableHandleValue vp) - { - JSContext* cx = xdr->cx(); - -- /* -- * A script constant can be an arbitrary primitive value as they are used -- * to implement JSOP_LOOKUPSWITCH. But they cannot be objects, see -- * bug 407186. -- */ - enum ConstTag { -- SCRIPT_INT = 0, -- SCRIPT_DOUBLE = 1, -- SCRIPT_ATOM = 2, -- SCRIPT_TRUE = 3, -- SCRIPT_FALSE = 4, -- SCRIPT_NULL = 5, -- SCRIPT_OBJECT = 6, -- SCRIPT_VOID = 7, -- SCRIPT_HOLE = 8 -+ SCRIPT_INT, -+ SCRIPT_DOUBLE, -+ SCRIPT_ATOM, -+ SCRIPT_TRUE, -+ SCRIPT_FALSE, -+ SCRIPT_NULL, -+ SCRIPT_OBJECT, -+ SCRIPT_VOID, -+ SCRIPT_HOLE - }; - -- uint32_t tag; -+ ConstTag tag; - if (mode == XDR_ENCODE) { - if (vp.isInt32()) { - tag = SCRIPT_INT; -@@ -133,7 +128,7 @@ js::XDRScriptConst(XDRState* xdr, MutableHandleValue vp) - } - } - -- if (!xdr->codeUint32(&tag)) -+ if (!xdr->codeEnum32(&tag)) - return false; - - switch (tag) { -@@ -199,6 +194,10 @@ js::XDRScriptConst(XDRState* xdr, MutableHandleValue vp) - if (mode == XDR_DECODE) - vp.setMagic(JS_ELEMENTS_HOLE); - break; -+ default: -+ // Fail in debug, but only soft-fail in release -+ MOZ_ASSERT(false, "Bad XDR value kind"); -+ return xdr->fail(JS::TranscodeResult_Failure_BadDecode); - } - return true; - } -@@ -800,6 +799,10 @@ js::XDRScript(XDRState* xdr, HandleScope scriptEnclosingScope, - case ScopeKind::WasmFunction: - MOZ_CRASH("wasm functions cannot be nested in JSScripts"); - break; -+ default: -+ // Fail in debug, but only soft-fail in release -+ MOZ_ASSERT(false, "Bad XDR scope kind"); -+ return xdr->fail(JS::TranscodeResult_Failure_BadDecode); - } - - if (mode == XDR_DECODE) -@@ -890,8 +893,9 @@ js::XDRScript(XDRState* xdr, HandleScope scriptEnclosingScope, - } - - default: { -- MOZ_ASSERT(false, "Unknown class kind."); -- return xdr->fail(JS::TranscodeResult_Failure_UnknownClassKind); -+ // Fail in debug, but only soft-fail in release -+ MOZ_ASSERT(false, "Bad XDR class kind"); -+ return xdr->fail(JS::TranscodeResult_Failure_BadDecode); - } - } - } -diff --git js/src/shell/js.cpp js/src/shell/js.cpp -index 16ee93bc66a8..1f5afb04e1f8 100644 ---- js/src/shell/js.cpp -+++ js/src/shell/js.cpp -@@ -1519,9 +1519,9 @@ ConvertTranscodeResultToJSException(JSContext* cx, JS::TranscodeResult rv) - MOZ_ASSERT(!cx->isExceptionPending()); - JS_ReportErrorASCII(cx, "Asm.js is not supported by XDR"); - return false; -- case JS::TranscodeResult_Failure_UnknownClassKind: -+ case JS::TranscodeResult_Failure_BadDecode: - MOZ_ASSERT(!cx->isExceptionPending()); -- JS_ReportErrorASCII(cx, "Unknown class kind, go fix it."); -+ JS_ReportErrorASCII(cx, "XDR data corruption"); - return false; - case JS::TranscodeResult_Failure_WrongCompileOption: - MOZ_ASSERT(!cx->isExceptionPending()); -diff --git js/src/vm/Xdr.h js/src/vm/Xdr.h -index e88968b9a4c0..18fa1af8ab5b 100644 ---- js/src/vm/Xdr.h -+++ js/src/vm/Xdr.h -@@ -279,13 +279,17 @@ class XDRState : public XDRCoderBase - template - bool codeEnum32(T* val, typename mozilla::EnableIf::value, T>::Type * = NULL) - { -+ // Mix the enumeration value with a random magic number, such that a -+ // corruption with a low-ranged value (like 0) is less likely to cause a -+ // miss-interpretation of the XDR content and instead cause a failure. -+ const uint32_t MAGIC = 0x21AB218C; - uint32_t tmp; - if (mode == XDR_ENCODE) -- tmp = uint32_t(*val); -+ tmp = uint32_t(*val) ^ MAGIC; - if (!codeUint32(&tmp)) - return false; - if (mode == XDR_DECODE) -- *val = T(tmp); -+ *val = T(tmp ^ MAGIC); - return true; - } - diff --git a/www/waterfox/files/patch-bug1419508 b/www/waterfox/files/patch-bug1419508 deleted file mode 100644 index 4d5ca04baaa1..000000000000 --- a/www/waterfox/files/patch-bug1419508 +++ /dev/null @@ -1,29 +0,0 @@ -commit 4d25545cc673 -Author: Gerald Squelart -Date: Thu Jan 25 16:21:23 2018 +1100 - - Bug 1419508 - Return early from CreateMaskLayer if there is no visible data - r=mattwoodrow a=lizzard - - MozReview-Commit-ID: 9jWGXA2eGvv - - --HG-- - extra : source : c5d8b1ed27228f4bcf45b2746f78dba3795d0868 ---- - layout/painting/FrameLayerBuilder.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git layout/painting/FrameLayerBuilder.cpp layout/painting/FrameLayerBuilder.cpp -index 3c5d04260f7e..48ec5db56251 100644 ---- layout/painting/FrameLayerBuilder.cpp -+++ layout/painting/FrameLayerBuilder.cpp -@@ -6358,6 +6358,10 @@ ContainerState::CreateMaskLayer(Layer *aLayer, - gfx::Rect boundingRect = CalculateBounds(newData.mRoundedClipRects, - newData.mAppUnitsPerDevPixel); - boundingRect.Scale(mParameters.mXScale, mParameters.mYScale); -+ if (boundingRect.IsEmpty()) { -+ // Return early if we know that there is effectively no visible data. -+ return nullptr; -+ } - - uint32_t maxSize = mManager->GetMaxTextureSize(); - NS_ASSERTION(maxSize > 0, "Invalid max texture size"); diff --git a/www/waterfox/files/patch-bug1419762 b/www/waterfox/files/patch-bug1419762 deleted file mode 100644 index 57599be571f2..000000000000 --- a/www/waterfox/files/patch-bug1419762 +++ /dev/null @@ -1,69 +0,0 @@ -commit 0f58a35d5cb7 -Author: Emilio Cobos Álvarez -Date: Thu Nov 23 01:01:34 2017 +0100 - - Bug 1419762 - Return the inline continuation of an IB split when appending. r=mats, a=jcristau - - The only reason not to do that is when there's after content in there. We know - that there isn't really any ::after content, since it would've been handled by - FindNextSibling, so we know we're performing a real append. - - MozReview-Commit-ID: ExoPolZy4gG - - --HG-- - extra : source : 333214e07fd463dc1c7db00875bb6dff98eb0cdf ---- - layout/base/crashtests/1419762.html | 15 +++++++++++++++ - layout/base/crashtests/crashtests.list | 1 + - layout/base/nsCSSFrameConstructor.cpp | 7 ++++--- - 3 files changed, 20 insertions(+), 3 deletions(-) - -diff --git layout/base/crashtests/1419762.html layout/base/crashtests/1419762.html -new file mode 100644 -index 000000000000..08a56106db93 ---- /dev/null -+++ layout/base/crashtests/1419762.html -@@ -0,0 +1,15 @@ -+ -+ -diff --git layout/base/crashtests/crashtests.list layout/base/crashtests/crashtests.list -index 7010ca4f2d3f..ecced042e228 100644 ---- layout/base/crashtests/crashtests.list -+++ layout/base/crashtests/crashtests.list -@@ -493,3 +493,4 @@ asserts(0-1) load 1343606.html # bug 1343948 - load 1352380.html - load 1362423-1.html - load 1381323.html -+load 1419762.html -diff --git layout/base/nsCSSFrameConstructor.cpp layout/base/nsCSSFrameConstructor.cpp -index bb6da0dba1da..0a1b588c21df 100644 ---- layout/base/nsCSSFrameConstructor.cpp -+++ layout/base/nsCSSFrameConstructor.cpp -@@ -7044,10 +7044,11 @@ nsCSSFrameConstructor::GetInsertionPrevSibling(InsertionPoint* aInsertion, - *aIsAppend = true; - if (IsFramePartOfIBSplit(aInsertion->mParentFrame)) { - // Since we're appending, we'll walk to the last anonymous frame -- // that was created for the broken inline frame. But don't walk -- // to the trailing inline if it's empty; stop at the block. -+ // that was created for the broken inline frame. We can walk to the -+ // trailing inline, since we know this is a real append, and not an -+ // insert (that would've been handled by `FindNextSibling`). - aInsertion->mParentFrame = -- GetLastIBSplitSibling(aInsertion->mParentFrame, false); -+ GetLastIBSplitSibling(aInsertion->mParentFrame, true); - } - // Get continuation that parents the last child. This MUST be done - // before the AdjustAppendParentForAfterContent call. diff --git a/www/waterfox/files/patch-bug1420001 b/www/waterfox/files/patch-bug1420001 deleted file mode 100644 index 384c973c54d2..000000000000 --- a/www/waterfox/files/patch-bug1420001 +++ /dev/null @@ -1,67 +0,0 @@ -commit 3bd032461399 -Author: Emilio Cobos Álvarez -Date: Mon Nov 27 14:57:57 2017 -0600 - - Bug 1420001 - style: Disable :visited if the document is being used as an image (from emilio:visited-as-an-image). r=dholbert, a=sledru - - MozReview-Commit-ID: F9MeT1kXZER - Source-Repo: https://github.com/servo/servo - Source-Revision: 7c99ae3bb8056f7e30a3b40340200eced385902d - - --HG-- - extra : source : ed1802f246cb377522e492bf313038213c114843 - extra : intermediate-source : d1599028c579f31e1441b9df277bf8f38c0e7f56 ---- - servo/components/style/gecko/data.rs | 25 +++++++++++++++++++++++-- - 1 file changed, 23 insertions(+), 2 deletions(-) - -diff --git servo/components/style/gecko/data.rs servo/components/style/gecko/data.rs -index aeab6a938b9f..244fa034ba61 100644 ---- servo/components/style/gecko/data.rs -+++ servo/components/style/gecko/data.rs -@@ -165,12 +165,20 @@ impl PerDocumentStyleDataImpl { - } - - /// Returns whether private browsing is enabled. -- pub fn is_private_browsing_enabled(&self) -> bool { -+ fn is_private_browsing_enabled(&self) -> bool { - let doc = - self.stylist.device().pres_context().mDocument.raw::(); - unsafe { bindings::Gecko_IsPrivateBrowsingEnabled(doc) } - } - -+ /// Returns whether the document is being used as an image. -+ fn is_being_used_as_an_image(&self) -> bool { -+ let doc = -+ self.stylist.device().pres_context().mDocument.raw::(); -+ -+ unsafe { (*doc).mIsBeingUsedAsImage() } -+ } -+ - /// Get the default computed values for this document. - pub fn default_computed_values(&self) -> &Arc { - self.stylist.device().default_computed_values_arc() -@@ -180,9 +188,22 @@ impl PerDocumentStyleDataImpl { - fn visited_links_enabled(&self) -> bool { - unsafe { bindings::Gecko_AreVisitedLinksEnabled() } - } -+ - /// Returns whether visited styles are enabled. - pub fn visited_styles_enabled(&self) -> bool { -- self.visited_links_enabled() && !self.is_private_browsing_enabled() -+ if !self.visited_links_enabled() { -+ return false; -+ } -+ -+ if self.is_private_browsing_enabled() { -+ return false; -+ } -+ -+ if self.is_being_used_as_an_image() { -+ return false; -+ } -+ -+ true - } - - /// Measure heap usage. diff --git a/www/waterfox/files/patch-bug1421009 b/www/waterfox/files/patch-bug1421009 deleted file mode 100644 index 81357b67ec14..000000000000 --- a/www/waterfox/files/patch-bug1421009 +++ /dev/null @@ -1,24 +0,0 @@ -commit d4db948c9381 -Author: Andreas Farre -Date: Tue Dec 5 04:54:00 2017 -0500 - - Bug 1421009 - Don't schedule idle callback if window is shutting down. r=bkelly, a=gchang ---- - dom/base/nsGlobalWindow.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git dom/base/nsGlobalWindow.cpp dom/base/nsGlobalWindow.cpp -index 40b0847e9b1c..bbbc94095896 100644 ---- dom/base/nsGlobalWindow.cpp -+++ dom/base/nsGlobalWindow.cpp -@@ -913,6 +913,10 @@ nsGlobalWindow::RequestIdleCallback(JSContext* aCx, - MOZ_RELEASE_ASSERT(IsInnerWindow()); - AssertIsOnMainThread(); - -+ if (mInnerObjectsFreed) { -+ return 0; -+ } -+ - uint32_t handle = mIdleRequestCallbackCounter++; - - RefPtr request = diff --git a/www/waterfox/files/patch-bug1421963 b/www/waterfox/files/patch-bug1421963 deleted file mode 100644 index 538df5e120fa..000000000000 --- a/www/waterfox/files/patch-bug1421963 +++ /dev/null @@ -1,39 +0,0 @@ -commit edbe55cb9057 -Author: Randell Jesup -Date: Thu Dec 7 13:24:46 2017 -0500 - - Bug 1421963: lock around SCTP input processing, not just the receive callback r=drno ---- - netwerk/sctp/datachannel/DataChannel.cpp | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git netwerk/sctp/datachannel/DataChannel.cpp netwerk/sctp/datachannel/DataChannel.cpp -index 4a0432469a80..6f13826ed7c6 100644 ---- netwerk/sctp/datachannel/DataChannel.cpp -+++ netwerk/sctp/datachannel/DataChannel.cpp -@@ -817,6 +817,7 @@ DataChannelConnection::SctpDtlsInput(TransportFlow *flow, - } - } - // Pass the data to SCTP -+ MutexAutoLock lock(mLock); - usrsctp_conninput(static_cast(this), data, len, 0); - } - -@@ -1224,7 +1225,7 @@ DataChannelConnection::SendDeferredMessages() - RefPtr channel; // we may null out the refs to this - - // This may block while something is modifying channels, but should not block for IO -- MutexAutoLock lock(mLock); -+ mLock.AssertCurrentThreadOwns(); - - LOG(("SendDeferredMessages called, pending type: %d", mPendingType)); - if (!mPendingType) { -@@ -2307,7 +2308,7 @@ DataChannelConnection::ReceiveCallback(struct socket* sock, void *data, size_t d - if (!data) { - usrsctp_close(sock); // SCTP has finished shutting down - } else { -- MutexAutoLock lock(mLock); -+ mLock.AssertCurrentThreadOwns(); - if (flags & MSG_NOTIFICATION) { - HandleNotification(static_cast(data), datalen); - } else { diff --git a/www/waterfox/files/patch-bug1422036 b/www/waterfox/files/patch-bug1422036 deleted file mode 100644 index 3f19764927f5..000000000000 --- a/www/waterfox/files/patch-bug1422036 +++ /dev/null @@ -1,229 +0,0 @@ -commit 74ed31e949fa -Author: Andrea Marchesini -Date: Mon Feb 5 19:55:08 2018 +0100 - - Bug 1422036 - Using WorkerControlRunnable to release resources in fetch when the worker is shutting down. r=catalinb, a=RyanVM - - --HG-- - extra : source : d79788e03f7451ebc4a3c694117497f091a5a129 ---- - dom/fetch/FetchConsumer.cpp | 123 +++++++++++++++++++++++++++++++++++++------- - dom/fetch/FetchConsumer.h | 5 +- - 2 files changed, 106 insertions(+), 22 deletions(-) - -diff --git dom/fetch/FetchConsumer.cpp dom/fetch/FetchConsumer.cpp -index b83c8671404a..1e173f9c9661 100644 ---- dom/fetch/FetchConsumer.cpp -+++ dom/fetch/FetchConsumer.cpp -@@ -102,6 +102,32 @@ public: - } - }; - -+// ControlRunnable used to complete the releasing of resources on the worker -+// thread when already shutting down. -+template -+class ContinueConsumeBodyControlRunnable final : public MainThreadWorkerControlRunnable -+{ -+ RefPtr> mFetchBodyConsumer; -+ -+public: -+ ContinueConsumeBodyControlRunnable(FetchBodyConsumer* aFetchBodyConsumer, -+ uint8_t* aResult) -+ : MainThreadWorkerControlRunnable(aFetchBodyConsumer->GetWorkerPrivate()) -+ , mFetchBodyConsumer(aFetchBodyConsumer) -+ { -+ MOZ_ASSERT(NS_IsMainThread()); -+ free(aResult); -+ } -+ -+ bool -+ WorkerRun(JSContext* aCx, WorkerPrivate* aWorkerPrivate) override -+ { -+ mFetchBodyConsumer->ContinueConsumeBody(NS_BINDING_ABORTED, 0, nullptr, -+ true /* shutting down */); -+ return true; -+ } -+}; -+ - template - class FailConsumeBodyWorkerRunnable : public MainThreadWorkerControlRunnable - { -@@ -189,6 +215,31 @@ public: - } - }; - -+// ControlRunnable used to complete the releasing of resources on the worker -+// thread when already shutting down. -+template -+class ContinueConsumeBlobBodyControlRunnable final -+ : public MainThreadWorkerControlRunnable -+{ -+ RefPtr> mFetchBodyConsumer; -+ -+public: -+ explicit ContinueConsumeBlobBodyControlRunnable(FetchBodyConsumer* aFetchBodyConsumer) -+ : MainThreadWorkerControlRunnable(aFetchBodyConsumer->GetWorkerPrivate()) -+ , mFetchBodyConsumer(aFetchBodyConsumer) -+ { -+ MOZ_ASSERT(NS_IsMainThread()); -+ } -+ -+ bool -+ WorkerRun(JSContext* aCx, WorkerPrivate* aWorkerPrivate) override -+ { -+ mFetchBodyConsumer->ContinueConsumeBlobBody(nullptr, -+ true /* shutting down */); -+ return true; -+ } -+}; -+ - template - class ConsumeBodyDoneObserver : public nsIStreamLoaderObserver - , public MutableBlobStorageCallback -@@ -216,20 +267,33 @@ public: - mFetchBodyConsumer->NullifyConsumeBodyPump(); - - uint8_t* nonconstResult = const_cast(aResult); -- if (mFetchBodyConsumer->GetWorkerPrivate()) { -+ if (!mFetchBodyConsumer->GetWorkerPrivate()) { -+ mFetchBodyConsumer->ContinueConsumeBody(aStatus, aResultLength, -+ nonconstResult); -+ // FetchBody is responsible for data. -+ return NS_SUCCESS_ADOPTED_DATA; -+ } -+ -+ { - RefPtr> r = - new ContinueConsumeBodyRunnable(mFetchBodyConsumer, - aStatus, - aResultLength, - nonconstResult); -- if (!r->Dispatch()) { -- NS_WARNING("Could not dispatch ConsumeBodyRunnable"); -- // Return failure so that aResult is freed. -- return NS_ERROR_FAILURE; -+ if (r->Dispatch()) { -+ // FetchBody is responsible for data. -+ return NS_SUCCESS_ADOPTED_DATA; - } -- } else { -- mFetchBodyConsumer->ContinueConsumeBody(aStatus, aResultLength, -- nonconstResult); -+ } -+ -+ // The worker is shutting down. Let's use a control runnable to complete the -+ // shutting down procedure. -+ -+ RefPtr> r = -+ new ContinueConsumeBodyControlRunnable(mFetchBodyConsumer, -+ nonconstResult); -+ if (NS_WARN_IF(!r->Dispatch())) { -+ return NS_ERROR_FAILURE; - } - - // FetchBody is responsible for data. -@@ -252,18 +316,28 @@ public: - - MOZ_ASSERT(aBlob); - -- if (mFetchBodyConsumer->GetWorkerPrivate()) { -+ if (!mFetchBodyConsumer->GetWorkerPrivate()) { -+ mFetchBodyConsumer->ContinueConsumeBlobBody(aBlob->Impl()); -+ return; -+ } -+ -+ { - RefPtr> r = - new ContinueConsumeBlobBodyRunnable(mFetchBodyConsumer, - aBlob->Impl()); - -- if (!r->Dispatch()) { -- NS_WARNING("Could not dispatch ConsumeBlobBodyRunnable"); -+ if (r->Dispatch()) { - return; - } -- } else { -- mFetchBodyConsumer->ContinueConsumeBlobBody(aBlob->Impl()); - } -+ -+ // The worker is shutting down. Let's use a control runnable to complete the -+ // shutting down procedure. -+ -+ RefPtr> r = -+ new ContinueConsumeBlobBodyControlRunnable(mFetchBodyConsumer); -+ -+ Unused << NS_WARN_IF(!r->Dispatch()); - } - - private: -@@ -525,7 +599,8 @@ template - void - FetchBodyConsumer::ContinueConsumeBody(nsresult aStatus, - uint32_t aResultLength, -- uint8_t* aResult) -+ uint8_t* aResult, -+ bool aShuttingDown) - { - AssertIsOnTargetThread(); - -@@ -550,6 +625,11 @@ FetchBodyConsumer::ContinueConsumeBody(nsresult aStatus, - self->ReleaseObject(); - }); - -+ if (aShuttingDown) { -+ // If shutting down, we don't want to resolve any promise. -+ return; -+ } -+ - if (NS_WARN_IF(NS_FAILED(aStatus))) { - localPromise->MaybeReject(NS_ERROR_DOM_ABORT_ERR); - } -@@ -632,7 +712,8 @@ FetchBodyConsumer::ContinueConsumeBody(nsresult aStatus, - - template - void --FetchBodyConsumer::ContinueConsumeBlobBody(BlobImpl* aBlobImpl) -+FetchBodyConsumer::ContinueConsumeBlobBody(BlobImpl* aBlobImpl, -+ bool aShuttingDown) - { - AssertIsOnTargetThread(); - MOZ_ASSERT(mConsumeType == CONSUME_BLOB); -@@ -646,13 +727,15 @@ FetchBodyConsumer::ContinueConsumeBlobBody(BlobImpl* aBlobImpl) - // sync with a body read. - MOZ_ASSERT(mBody->BodyUsed()); - -- MOZ_ASSERT(mConsumePromise); -- RefPtr localPromise = mConsumePromise.forget(); -+ if (!aShuttingDown) { -+ MOZ_ASSERT(mConsumePromise); -+ RefPtr localPromise = mConsumePromise.forget(); - -- RefPtr blob = dom::Blob::Create(mGlobal, aBlobImpl); -- MOZ_ASSERT(blob); -+ RefPtr blob = dom::Blob::Create(mGlobal, aBlobImpl); -+ MOZ_ASSERT(blob); - -- localPromise->MaybeResolve(blob); -+ localPromise->MaybeResolve(blob); -+ } - - ReleaseObject(); - } -diff --git dom/fetch/FetchConsumer.h dom/fetch/FetchConsumer.h -index 04b02aee5d4b..d45b62b8379b 100644 ---- dom/fetch/FetchConsumer.h -+++ dom/fetch/FetchConsumer.h -@@ -54,10 +54,11 @@ public: - BeginConsumeBodyMainThread(); - - void -- ContinueConsumeBody(nsresult aStatus, uint32_t aLength, uint8_t* aResult); -+ ContinueConsumeBody(nsresult aStatus, uint32_t aLength, uint8_t* aResult, -+ bool aShuttingDown = false); - - void -- ContinueConsumeBlobBody(BlobImpl* aBlobImpl); -+ ContinueConsumeBlobBody(BlobImpl* aBlobImpl, bool aShuttingDown = false); - - void - ShutDownMainThreadConsuming(); diff --git a/www/waterfox/files/patch-bug1422389 b/www/waterfox/files/patch-bug1422389 deleted file mode 100644 index 07096fca06db..000000000000 --- a/www/waterfox/files/patch-bug1422389 +++ /dev/null @@ -1,28 +0,0 @@ -commit 25e68494fad3 -Author: Jan-Ivar Bruaroey -Date: Fri Dec 1 20:49:46 2017 -0500 - - Bug 1422389 - Limit default engine resolution. r=mchiang, a=abillings - - MozReview-Commit-ID: LS1z7I4myeb - - --HG-- - extra : rebase_source : 200216163b4555ede8912e64871eea81eb8affac - extra : source : f0fd6e20a13d11660a5ac57e9703f09978f12acb ---- - dom/media/webrtc/MediaEngineDefault.cpp | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git dom/media/webrtc/MediaEngineDefault.cpp dom/media/webrtc/MediaEngineDefault.cpp -index ea5996e92e23..01efb04b5df8 100644 ---- dom/media/webrtc/MediaEngineDefault.cpp -+++ dom/media/webrtc/MediaEngineDefault.cpp -@@ -120,6 +120,8 @@ MediaEngineDefaultVideoSource::Allocate(const dom::MediaTrackConstraints &aConst - MediaEngine::DEFAULT_43_VIDEO_HEIGHT - #endif - ); -+ mOpts.mWidth = std::max(160, std::min(mOpts.mWidth, 4096)); -+ mOpts.mHeight = std::max(90, std::min(mOpts.mHeight, 2160)); - mState = kAllocated; - *aOutHandle = nullptr; - return NS_OK; diff --git a/www/waterfox/files/patch-bug1422518 b/www/waterfox/files/patch-bug1422518 deleted file mode 100644 index bc8a641cb337..000000000000 --- a/www/waterfox/files/patch-bug1422518 +++ /dev/null @@ -1,27 +0,0 @@ -commit 22e0f06767fe -Author: Valentin Gosu -Date: Tue Dec 5 02:29:41 2017 +0100 - - Bug 1422518 - Use LOAD_FLAGS_DISALLOW_INHERIT_PRINCIPAL for meta refresh r=bz a=gchang - MozReview-Commit-ID: H3hnO3NmHYA - - --HG-- - extra : rebase_source : b9f7cbccdd2f2723e6d66d89f9ac529d462d75dd - extra : source : 6f5aec4cde6f874921eaa1b0b9d7e9d4c7feabe0 ---- - docshell/base/nsDocShell.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git docshell/base/nsDocShell.cpp docshell/base/nsDocShell.cpp -index 83cb87dd8255..31d414d1b57d 100644 ---- docshell/base/nsDocShell.cpp -+++ docshell/base/nsDocShell.cpp -@@ -6976,7 +6976,7 @@ nsDocShell::ForceRefreshURI(nsIURI* aURI, nsIPrincipal* aPrincipal, int32_t aDel - * LoadURI(...) will cancel all refresh timers... This causes the - * Timer and its refreshData instance to be released... - */ -- LoadURI(aURI, loadInfo, nsIWebNavigation::LOAD_FLAGS_NONE, true); -+ LoadURI(aURI, loadInfo, nsIWebNavigation::LOAD_FLAGS_DISALLOW_INHERIT_PRINCIPAL, true); - - return NS_OK; - } diff --git a/www/waterfox/files/patch-bug1422545 b/www/waterfox/files/patch-bug1422545 deleted file mode 100644 index 0bf2e1e3109d..000000000000 --- a/www/waterfox/files/patch-bug1422545 +++ /dev/null @@ -1,38 +0,0 @@ -commit d5e722168a84 -Author: Dragana Damjanovic -Date: Wed Dec 20 16:13:36 2017 +0100 - - Bug 1422545 - Do not close connection between a httpChannelChild and its httpChannelParent if we need to divert to parent. r=mayhemer, a=jcristau - - If UnknowDecoder is involved and the received content is short we will know whether we need to divert to parent only after OnStartRequest of the listener chain is called. Therefore do not do cleanup if we detect diversion. - - --HG-- - extra : source : e87b07c9db7c302237fa0adbb68c0f31b1840191 ---- - netwerk/protocol/http/HttpChannelChild.cpp | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - -diff --git netwerk/protocol/http/HttpChannelChild.cpp netwerk/protocol/http/HttpChannelChild.cpp -index 18b9fe2de1db..8fc7746a2a42 100644 ---- netwerk/protocol/http/HttpChannelChild.cpp -+++ netwerk/protocol/http/HttpChannelChild.cpp -@@ -1100,6 +1100,19 @@ HttpChannelChild::OnStopRequest(const nsresult& channelStatus, - // DoOnStopRequest() calls ReleaseListeners() - } - -+ // If unknownDecoder is involved and the received content is short we will -+ // know whether we need to divert to parent only after OnStopRequest of the -+ // listeners chain is called in DoOnStopRequest. At that moment -+ // unknownDecoder will call OnStartRequest of the real listeners of the -+ // channel including the OnStopRequest of UrlLoader which decides whether we -+ // need to divert to parent. -+ // If we are diverting to parent we should not do a cleanup. -+ if (mDivertingToParent) { -+ LOG(("HttpChannelChild::OnStopRequest - We are diverting to parent, " -+ "postpone cleaning up.")); -+ return; -+ } -+ - CleanupBackgroundChannel(); - - // If there is a possibility we might want to write alt data to the cache diff --git a/www/waterfox/files/patch-bug1423647 b/www/waterfox/files/patch-bug1423647 deleted file mode 100644 index 06855735a096..000000000000 --- a/www/waterfox/files/patch-bug1423647 +++ /dev/null @@ -1,37 +0,0 @@ -commit 65de8dd25011 -Author: Dão Gottwald -Date: Thu Dec 7 12:25:33 2017 +0100 - - Bug 1423647 - Restore border-radius for buttons in the Downloads View in the Library. r=mak, a=jcristau - - MozReview-Commit-ID: 6kkdp8pHAlv - - --HG-- - extra : source : 1b381ddb9779e2e0bc2be4f9382ca8560862b409 ---- - browser/themes/shared/downloads/allDownloadsViewOverlay.inc.css | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git browser/themes/shared/downloads/allDownloadsViewOverlay.inc.css browser/themes/shared/downloads/allDownloadsViewOverlay.inc.css -index 063668d48509..663b0893892c 100644 ---- browser/themes/shared/downloads/allDownloadsViewOverlay.inc.css -+++ browser/themes/shared/downloads/allDownloadsViewOverlay.inc.css -@@ -80,10 +80,6 @@ - padding: 0 18px; - } - --.downloadButton:-moz-focusring { -- -moz-outline-radius: 50%; --} -- - .downloadButton > .button-box { - -moz-appearance: none; - padding: 2px !important; -@@ -104,6 +100,7 @@ - .downloadButton:hover > .button-box { - background-color: graytext; - color: -moz-field; -+ border-radius: 50%; - } - - .downloadButton:hover:active > .button-box { diff --git a/www/waterfox/files/patch-bug1423770 b/www/waterfox/files/patch-bug1423770 deleted file mode 100644 index bd82b116bf1d..000000000000 --- a/www/waterfox/files/patch-bug1423770 +++ /dev/null @@ -1,44 +0,0 @@ -commit 2506c20ded5b -Author: Alex Chronopoulos -Date: Wed Dec 20 09:21:40 2017 -0500 - - Bug 1423770. r=padenot, a=jcristau - - --HG-- - extra : rebase_source : 6c9ad483fe1ef89966e1a2a1fac8a9bdb8bf43c8 ---- - media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp -index 5c2bcd16d017..2bb7203f85bd 100644 ---- media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp -+++ media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp -@@ -518,6 +518,7 @@ public: - packetizer_->Channels() != outputChannels) { - // It's ok to drop the audio still in the packetizer here. - packetizer_ = new AudioPacketizer(audio_10ms, outputChannels); -+ packet_ = MakeUnique(audio_10ms * outputChannels); - } - - packetizer_->Input(samples, chunk.mDuration); -@@ -525,8 +526,8 @@ public: - while (packetizer_->PacketsAvailable()) { - uint32_t samplesPerPacket = packetizer_->PacketSize() * - packetizer_->Channels(); -- packetizer_->Output(packet_); -- mConduit->SendAudioFrame(packet_, samplesPerPacket, rate, 0); -+ packetizer_->Output(packet_.get()); -+ mConduit->SendAudioFrame(packet_.get(), samplesPerPacket, rate, 0); - } - } - -@@ -555,7 +556,7 @@ protected: - // Only accessed on mThread - nsAutoPtr> packetizer_; - // A buffer to hold a single packet of audio. -- int16_t packet_[AUDIO_SAMPLE_BUFFER_MAX_BYTES / sizeof(int16_t)]; -+ UniquePtr packet_; - }; - - static char kDTLSExporterLabel[] = "EXTRACTOR-dtls_srtp"; diff --git a/www/waterfox/files/patch-bug1424311 b/www/waterfox/files/patch-bug1424311 deleted file mode 100644 index 8db2056c22af..000000000000 --- a/www/waterfox/files/patch-bug1424311 +++ /dev/null @@ -1,66 +0,0 @@ -commit af4e28ddf70d -Author: David Keeler -Date: Wed Mar 28 13:43:03 2018 -0700 - - Bug 1424311 - Don't persist the certificate exception dialog's size so it doesn't grow unboundedly. r=jcj, a=RyanVM - - window.sizeToContent() apparently interacts poorly with windows that have a - persisted size (see bug 90276, which is a 5-digit bug that hasn't been touched - in over a decade). As a workaround, don't persist the certificate exception - dialog's size. This means we have to call window.sizeToContent() more often and - unfortunately results in the window growing and shrinking again on Windows, but - at least it will always be the "right size" for its content. - - MozReview-Commit-ID: 9UT3X8IEqZg - - --HG-- - extra : source : 02213fd3a9c84544936a6901adb8821e0c0f44b9 ---- - security/manager/pki/resources/content/exceptionDialog.js | 3 ++- - security/manager/pki/resources/content/exceptionDialog.xul | 2 -- - 2 files changed, 2 insertions(+), 3 deletions(-) - -diff --git security/manager/pki/resources/content/exceptionDialog.js security/manager/pki/resources/content/exceptionDialog.js -index bf17af169c54..72c7d455e958 100644 ---- security/manager/pki/resources/content/exceptionDialog.js -+++ security/manager/pki/resources/content/exceptionDialog.js -@@ -59,6 +59,7 @@ function initExceptionDialog() { - // Set out parameter to false by default - args[0].exceptionAdded = false; - } -+ window.sizeToContent(); - } - - /** -@@ -150,6 +151,7 @@ function resetDialog() { - setText("status2LongDescription", ""); - setText("status3Description", ""); - setText("status3LongDescription", ""); -+ window.sizeToContent(); - } - - /** -@@ -275,7 +277,6 @@ function updateCertStatus() { - } - - window.sizeToContent(); -- - gNeedReset = true; - } - -diff --git security/manager/pki/resources/content/exceptionDialog.xul security/manager/pki/resources/content/exceptionDialog.xul -index 6d417f360ccd..b7d85e2930c4 100644 ---- security/manager/pki/resources/content/exceptionDialog.xul -+++ security/manager/pki/resources/content/exceptionDialog.xul -@@ -14,11 +14,9 @@ - buttons="cancel,extra1,extra2" - buttonlabelextra1="&exceptionMgr.exceptionButton.label;" - buttonaccesskeyextra1="&exceptionMgr.exceptionButton.accesskey;" -- style="width: 46em; min-height: 38em;" - onload="initExceptionDialog();" - ondialogextra1="addException();" - ondialogextra2="checkCert();" -- persist="screenX screenY width height" - defaultButton="extra2"> - - diff --git a/www/waterfox/files/patch-bug1424373 b/www/waterfox/files/patch-bug1424373 deleted file mode 100644 index e237dfc67cd8..000000000000 --- a/www/waterfox/files/patch-bug1424373 +++ /dev/null @@ -1,305 +0,0 @@ -commit 3512ab03dd1f -Author: Mike Conley -Date: Mon Dec 18 11:19:53 2017 -0500 - - Bug 1424373 - Don't set crash reporting prefs when showing about:tabcrashed for a crash without a report. r=Mossop a=jcristau ---- - browser/base/content/aboutTabCrashed.js | 1 + - .../test/tabcrashed/browser_autoSubmitRequest.js | 63 ++++++++++++++++++++-- - .../content/test/tabcrashed/browser_withoutDump.js | 10 +--- - browser/base/content/test/tabcrashed/head.js | 12 +++++ - browser/modules/ContentCrashHandlers.jsm | 13 +++-- - 5 files changed, 83 insertions(+), 16 deletions(-) - -diff --git browser/base/content/aboutTabCrashed.js browser/base/content/aboutTabCrashed.js -index 822e3f78d4b5..8fccc92aa0fe 100644 ---- browser/base/content/aboutTabCrashed.js -+++ browser/base/content/aboutTabCrashed.js -@@ -303,6 +303,7 @@ var AboutTabCrashed = { - includeURL, - URL, - autoSubmit, -+ hasReport: this.hasReport, - }); - }, - }; -diff --git browser/base/content/test/tabcrashed/browser_autoSubmitRequest.js browser/base/content/test/tabcrashed/browser_autoSubmitRequest.js -index a86b1e2c79b7..e04ebc80cdea 100644 ---- browser/base/content/test/tabcrashed/browser_autoSubmitRequest.js -+++ browser/base/content/test/tabcrashed/browser_autoSubmitRequest.js -@@ -19,9 +19,9 @@ requestLongerTimeout(2); - add_task(async function test_show_form() { - await SpecialPowers.pushPrefEnv({ - set: [[AUTOSUBMIT_PREF, false]], -- }) -+ }); - -- return BrowserTestUtils.withNewTab({ -+ await BrowserTestUtils.withNewTab({ - gBrowser, - url: PAGE, - }, async function(browser) { -@@ -66,9 +66,9 @@ add_task(async function test_show_form() { - add_task(async function test_show_form() { - await SpecialPowers.pushPrefEnv({ - set: [[AUTOSUBMIT_PREF, true]], -- }) -+ }); - -- return BrowserTestUtils.withNewTab({ -+ await BrowserTestUtils.withNewTab({ - gBrowser, - url: PAGE, - }, async function(browser) { -@@ -95,3 +95,58 @@ add_task(async function test_show_form() { - "Autosubmission pref should have been set."); - }); - }); -+ -+/** -+ * Tests that we properly set the autoSubmit preference if the user is -+ * presented with a tabcrashed page without a crash report. -+ */ -+add_task(async function test_no_offer() { -+ // We should default to sending the report. -+ Assert.ok(TabCrashHandler.prefs.getBoolPref("sendReport")); -+ -+ await SpecialPowers.pushPrefEnv({ -+ set: [[AUTOSUBMIT_PREF, false]], -+ }); -+ -+ await BrowserTestUtils.withNewTab({ -+ gBrowser, -+ url: PAGE, -+ }, async function(browser) { -+ await TabStateFlusher.flush(browser); -+ -+ // Make it so that it seems like no dump is available for the next crash. -+ prepareNoDump(); -+ -+ // Now crash the browser. -+ await BrowserTestUtils.crashBrowser(browser); -+ -+ // eslint-disable-next-line mozilla/no-cpows-in-tests -+ let doc = browser.contentDocument; -+ -+ // Ensure the request to autosubmit is invisible, since there's no report. -+ let requestRect = doc.getElementById("requestAutoSubmit") -+ .getBoundingClientRect(); -+ Assert.equal(0, requestRect.height, -+ "Request for autosubmission has no height"); -+ Assert.equal(0, requestRect.width, -+ "Request for autosubmission has no width"); -+ -+ // Since the pref is set to false, the checkbox should be -+ // unchecked. -+ let autoSubmit = doc.getElementById("autoSubmit"); -+ Assert.ok(!autoSubmit.checked, -+ "Checkbox for autosubmission is not checked."); -+ -+ let restoreButton = doc.getElementById("restoreTab"); -+ restoreButton.click(); -+ -+ await BrowserTestUtils.browserLoaded(browser, false, PAGE); -+ -+ // The autosubmission pref should now be set. -+ Assert.ok(!Services.prefs.getBoolPref(AUTOSUBMIT_PREF), -+ "Autosubmission pref should not have changed."); -+ }); -+ -+ // We should not have changed the default value for sending the report. -+ Assert.ok(TabCrashHandler.prefs.getBoolPref("sendReport")); -+}); -diff --git browser/base/content/test/tabcrashed/browser_withoutDump.js browser/base/content/test/tabcrashed/browser_withoutDump.js -index 62d997240af4..33bc2b3164a1 100644 ---- browser/base/content/test/tabcrashed/browser_withoutDump.js -+++ browser/base/content/test/tabcrashed/browser_withoutDump.js -@@ -2,16 +2,8 @@ - - const PAGE = "data:text/html,A%20regular,%20everyday,%20normal%20page."; - --/** -- * Monkey patches TabCrashHandler.getDumpID to return null in order to test -- * about:tabcrashed when a dump is not available. -- */ - add_task(async function setup() { -- let originalGetDumpID = TabCrashHandler.getDumpID; -- TabCrashHandler.getDumpID = function(browser) { return null; }; -- registerCleanupFunction(() => { -- TabCrashHandler.getDumpID = originalGetDumpID; -- }); -+ prepareNoDump(); - }); - - /** -diff --git browser/base/content/test/tabcrashed/head.js browser/base/content/test/tabcrashed/head.js -index e437acbcc4d5..9102e409ee91 100644 ---- browser/base/content/test/tabcrashed/head.js -+++ browser/base/content/test/tabcrashed/head.js -@@ -121,3 +121,15 @@ async function setupLocalCrashReportServer() { - env.set("MOZ_CRASHREPORTER_URL", serverUrl); - }); - } -+ -+/** -+ * Monkey patches TabCrashHandler.getDumpID to return null in order to test -+ * about:tabcrashed when a dump is not available. -+ */ -+function prepareNoDump() { -+ let originalGetDumpID = TabCrashHandler.getDumpID; -+ TabCrashHandler.getDumpID = function(browser) { return null; }; -+ registerCleanupFunction(() => { -+ TabCrashHandler.getDumpID = originalGetDumpID; -+ }); -+} -diff --git browser/modules/ContentCrashHandlers.jsm browser/modules/ContentCrashHandlers.jsm -index 36e60ede4f03..524d6a86a50a 100644 ---- browser/modules/ContentCrashHandlers.jsm -+++ browser/modules/ContentCrashHandlers.jsm -@@ -361,8 +361,14 @@ this.TabCrashHandler = { - * even if they are empty. - */ - maybeSendCrashReport(message) { -- if (!AppConstants.MOZ_CRASHREPORTER) -+ if (!AppConstants.MOZ_CRASHREPORTER) { -+ return; -+ } -+ -+ if (!message.data.hasReport) { -+ // There was no report, so nothing to do. - return; -+ } - - let browser = message.target.browser; - -@@ -374,8 +380,9 @@ this.TabCrashHandler = { - - let childID = this.browserMap.get(browser); - let dumpID = this.childMap.get(childID); -- if (!dumpID) -- return -+ if (!dumpID) { -+ return; -+ } - - if (!message.data.sendReport) { - Services.telemetry.getHistogramById("FX_CONTENT_CRASH_NOT_SUBMITTED").add(1); - -commit a4a421108540 -Author: Mike Conley -Date: Thu Dec 21 16:36:13 2017 -0500 - - Bug 1424373 - Rename crash report submission pref. r=Mossop a=jcristau ---- - browser/app/profile/firefox.js | 2 +- - browser/base/content/test/tabcrashed/browser_autoSubmitRequest.js | 2 +- - browser/components/preferences/in-content/privacy.xul | 6 +++--- - .../tests/browser_bug1020245_openPreferences_to_paneContent.js | 4 ++-- - .../components/sessionstore/test/browser_background_tab_crash.js | 2 +- - browser/modules/ContentCrashHandlers.jsm | 4 ++-- - browser/modules/test/browser/browser_UnsubmittedCrashHandler.js | 4 ++-- - 7 files changed, 12 insertions(+), 12 deletions(-) - -diff --git browser/app/profile/firefox.js browser/app/profile/firefox.js -index 8c29be0acc58..a1844936fdea 100644 ---- browser/app/profile/firefox.js -+++ browser/app/profile/firefox.js -@@ -1664,7 +1664,7 @@ pref("browser.crashReports.unsubmittedCheck.enabled", false); - // without a user choice before we suppress the notification for - // some number of days. - pref("browser.crashReports.unsubmittedCheck.chancesUntilSuppress", 4); --pref("browser.crashReports.unsubmittedCheck.autoSubmit", false); -+pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false); - - // Preferences for the form autofill system extension - // The truthy values of "extensions.formautofill.available" are "on" and "detect", -diff --git browser/base/content/test/tabcrashed/browser_autoSubmitRequest.js browser/base/content/test/tabcrashed/browser_autoSubmitRequest.js -index e04ebc80cdea..1d4a70a1d145 100644 ---- browser/base/content/test/tabcrashed/browser_autoSubmitRequest.js -+++ browser/base/content/test/tabcrashed/browser_autoSubmitRequest.js -@@ -1,7 +1,7 @@ - "use strict"; - - const PAGE = "data:text/html,A%20regular,%20everyday,%20normal%20page."; --const AUTOSUBMIT_PREF = "browser.crashReports.unsubmittedCheck.autoSubmit"; -+const AUTOSUBMIT_PREF = "browser.crashReports.unsubmittedCheck.autoSubmit2"; - - const {TabStateFlusher} = - Cu.import("resource:///modules/sessionstore/TabStateFlusher.jsm", {}); -diff --git browser/components/preferences/in-content-new/privacy.xul browser/components/preferences/in-content-new/privacy.xul -index 7eb882972ffa..1d34065ac7e5 100644 ---- browser/components/preferences/in-content-new/privacy.xul -+++ browser/components/preferences/in-content-new/privacy.xul -@@ -161,8 +161,8 @@ - - - #ifdef MOZ_CRASHREPORTER -- - #endif - -@@ -671,7 +671,7 @@ - #ifdef MOZ_CRASHREPORTER - - -
-+ -diff --git layout/style/crashtests/crashtests.list layout/style/crashtests/crashtests.list -index d75d5559ec2b..be9a46c52bfa 100644 ---- layout/style/crashtests/crashtests.list -+++ layout/style/crashtests/crashtests.list -@@ -206,3 +206,4 @@ load 1404324-2.html - load 1404324-3.html - load 1398581.html - load 1404057.html -+load 1404180-1.html diff --git a/www/waterfox/files/patch-bug1404323 b/www/waterfox/files/patch-bug1404323 deleted file mode 100644 index 20adb23c2c44..000000000000 --- a/www/waterfox/files/patch-bug1404323 +++ /dev/null @@ -1,27 +0,0 @@ -commit f9c6b4c7459c -Author: Lee Salzman -Date: Fri Sep 29 23:59:40 2017 -0400 - - Bug 1404323 - Limit WindowSurfaceX11Image::Commit to clip bounds. r=gankro, a=ritu - - MozReview-Commit-ID: 55GbZ2EHdbQ - - --HG-- - extra : source : 19c2892e7a3ad24b6d235948ef514b20e216b57d ---- - widget/gtk/WindowSurfaceX11Image.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git widget/gtk/WindowSurfaceX11Image.cpp widget/gtk/WindowSurfaceX11Image.cpp -index 5de0288043d6..59db17b642f2 100644 ---- widget/gtk/WindowSurfaceX11Image.cpp -+++ widget/gtk/WindowSurfaceX11Image.cpp -@@ -93,7 +93,7 @@ WindowSurfaceX11Image::Commit(const LayoutDeviceIntRegion& aInvalidRegion) - } - - gfx::IntRect bounds = aInvalidRegion.GetBounds().ToUnknownRect(); -- gfx::Rect rect(0, 0, bounds.XMost(), bounds.YMost()); -+ gfx::Rect rect(bounds); - if (rect.IsEmpty()) { - return; - } diff --git a/www/waterfox/files/patch-bug1404324 b/www/waterfox/files/patch-bug1404324 deleted file mode 100644 index afcbc3efb2ec..000000000000 --- a/www/waterfox/files/patch-bug1404324 +++ /dev/null @@ -1,299 +0,0 @@ -commit 5647dde295f4 -Author: Emilio Cobos Álvarez -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 @@ -+ -+ -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 @@ -+ -+ -+ -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 @@ -+ -+ -+ -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/waterfox/files/patch-bug1404568 b/www/waterfox/files/patch-bug1404568 deleted file mode 100644 index 3884d431c1bb..000000000000 --- a/www/waterfox/files/patch-bug1404568 +++ /dev/null @@ -1,120 +0,0 @@ -commit 7d205a638012 -Author: Ian Moody -Date: Sun Oct 8 13:23:33 2017 +0100 - - Bug 1404568 - Improve webext browser_action icon fallbacks. r=mixedpuppy, a=ritu - - Currently if there is no default icon at the specified size, the default icon - falls back to the light text icon at that size. This is wrong in two ways: - First, the default theme uses dark text, so it should fallback to the dark icon - Secondly, authors expect the unsized default_icon to be used if specified - - This patch fixes both of these issues, so that the default icon first falls back - to the unsized default_icon, and then only if that is not specified falls back - to the dark icon - - MozReview-Commit-ID: C3RRTKhYq6r - - --HG-- - extra : source : ca81275884eb6147bd1022779fcac81fa0930128 ---- - .../extensions/test/browser/browser_ext_browserAction_theme_icons.js | 4 ++-- - toolkit/components/extensions/ExtensionParent.jsm | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git browser/components/extensions/test/browser/browser_ext_browserAction_theme_icons.js browser/components/extensions/test/browser/browser_ext_browserAction_theme_icons.js -index 05d8474ab2b6..b910568e0f78 100644 ---- browser/components/extensions/test/browser/browser_ext_browserAction_theme_icons.js -+++ browser/components/extensions/test/browser/browser_ext_browserAction_theme_icons.js -@@ -46,7 +46,7 @@ async function testStaticTheme(options) { - await extension.startup(); - - // Confirm that the browser action has the correct default icon before a theme is loaded. -- let expectedDefaultIcon = withDefaultIcon ? "default.png" : "light.png"; -+ let expectedDefaultIcon = withDefaultIcon ? "default.png" : "dark.png"; - await testBrowserAction(extension, expectedDefaultIcon); - - let theme = ExtensionTestUtils.loadExtension({ -@@ -164,7 +164,7 @@ add_task(async function browseraction_theme_icons_dynamic_theme() { - "theme_icons": [{ - "light": "light.png", - "dark": "dark.png", -- "size": 19, -+ "size": 16, - }], - }, - }, -diff --git toolkit/components/extensions/ExtensionParent.jsm toolkit/components/extensions/ExtensionParent.jsm -index e608ff2d19c6..75df6a285195 100644 ---- toolkit/components/extensions/ExtensionParent.jsm -+++ toolkit/components/extensions/ExtensionParent.jsm -@@ -1306,9 +1306,9 @@ let IconDetails = { - this._checkURL(lightURL, extension); - this._checkURL(darkURL, extension); - -- let defaultURL = result[size]; -+ let defaultURL = result[size] || result[19]; // always fallback to default first - result[size] = { -- "default": defaultURL || lightURL, // Fallback to the light url if no default is specified. -+ "default": defaultURL || darkURL, // Fallback to the dark url if no default is specified. - "light": lightURL, - "dark": darkURL, - }; - -commit 1cceb370d13c -Author: Ian Moody -Date: Wed Oct 4 01:40:45 2017 +0100 - - Bug 1404568 - Use the correct browser_action theme icons when the action is in a menu-panel. r=mixedpuppy, a=ritu - - The patch adding support for specifying theme icons had a bug in the CSS: it - added styles for the action in a menu-panel depending on theme, but missed out - the theme pseudo-class selectors. Therefore the dark text icon was always used - since it was last in the CSS. - Additionally, the menu panels can't be styled, so still have light backgrounds - and dark text even in light text themes. If a light icon is used in the menu - panel in a light text theme it will be hard to see. - - Thus, this patch adds the pseudo-class for dark text themes, but removes the - selector entirely for light text themes. - - MozReview-Commit-ID: AmKVDYwGGKj - - --HG-- - extra : source : 38347dff77997359905b6efc1f6061e4103431d6 ---- - browser/base/content/browser.css | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - -diff --git browser/base/content/browser.css browser/base/content/browser.css -index bbd7310f55d0..fe940cf58408 100644 ---- browser/base/content/browser.css -+++ browser/base/content/browser.css -@@ -377,12 +377,11 @@ toolbarpaletteitem > toolbaritem[sdkstylewidget="true"][cui-areatype="toolbar"] - list-style-image: var(--webextension-menupanel-image, inherit); - } - -- .webextension-browser-action[cui-areatype="menu-panel"], - toolbarpaletteitem[place="palette"] > .webextension-browser-action:-moz-lwtheme-brighttext { - list-style-image: var(--webextension-menupanel-image-light, inherit); - } - -- .webextension-browser-action[cui-areatype="menu-panel"], -+ .webextension-browser-action[cui-areatype="menu-panel"]:-moz-lwtheme-darktext, - toolbarpaletteitem[place="palette"] > .webextension-browser-action:-moz-lwtheme-darktext { - list-style-image: var(--webextension-menupanel-image-dark, inherit); - } -@@ -414,12 +413,11 @@ toolbarpaletteitem > toolbaritem[sdkstylewidget="true"][cui-areatype="toolbar"] - list-style-image: var(--webextension-menupanel-image-2x, inherit); - } - -- .webextension-browser-action[cui-areatype="menu-panel"], - toolbarpaletteitem[place="palette"] > .webextension-browser-action:-moz-lwtheme-brighttext { - list-style-image: var(--webextension-menupanel-image-2x-light, inherit); - } - -- .webextension-browser-action[cui-areatype="menu-panel"], -+ .webextension-browser-action[cui-areatype="menu-panel"]:-moz-lwtheme-darktext, - toolbarpaletteitem[place="palette"] > .webextension-browser-action:-moz-lwtheme-darktext { - list-style-image: var(--webextension-menupanel-image-2x-dark, inherit); - } diff --git a/www/waterfox/files/patch-bug1404651 b/www/waterfox/files/patch-bug1404651 deleted file mode 100644 index 0c9f490f52ca..000000000000 --- a/www/waterfox/files/patch-bug1404651 +++ /dev/null @@ -1,39 +0,0 @@ -commit 698e5f304f4b -Author: Gijs Kruitbosch -Date: Wed Oct 4 13:29:53 2017 +0100 - - Bug 1404651 - Keep focus in the tabstrip when the focus has shifted with the arrow keys. r=dao, a=ritu - - MozReview-Commit-ID: Brm9jImW9bc - - --HG-- - extra : source : 0304a90aee90618165af50193ea6255c54a6b9ea ---- - browser/base/content/tabbrowser.xml | 13 +++++++------ - 1 file changed, 7 insertions(+), 6 deletions(-) - -diff --git browser/base/content/tabbrowser.xml browser/base/content/tabbrowser.xml -index 37efdcc5bc0c..4f40e45f2446 100644 ---- browser/base/content/tabbrowser.xml -+++ browser/base/content/tabbrowser.xml -@@ -1417,13 +1417,14 @@ - findBar._findField.getAttribute("focused") == "true"); - } - -- // If focus is in the tab bar, retain it there. -- if (document.activeElement == oldTab) { -- // We need to explicitly focus the new tab, because -- // tabbox.xml does this only in some cases. -+ let activeEl = document.activeElement; -+ // If focus is on the old tab, move it to the new tab. -+ if (activeEl == oldTab) { - newTab.focus(); -- } else if (gMultiProcessBrowser && document.activeElement !== newBrowser) { -- -+ } else if (gMultiProcessBrowser && activeEl != newBrowser && activeEl != newTab) { -+ // In e10s, if focus isn't already in the tabstrip or on the new browser, -+ // and the new browser's previous focus wasn't in the url bar but focus is -+ // there now, we need to adjust focus further. - let keepFocusOnUrlBar = newBrowser && - newBrowser._urlbarFocused && - gURLBar && diff --git a/www/waterfox/files/patch-bug1404714 b/www/waterfox/files/patch-bug1404714 deleted file mode 100644 index 5c867926d439..000000000000 --- a/www/waterfox/files/patch-bug1404714 +++ /dev/null @@ -1,34 +0,0 @@ -commit 867b599b37e0 -Author: Benjamin Bouvier -Date: Tue Oct 3 19:57:05 2017 +0200 - - Bug 1404714 - inIon() should return false when in wasm. r=nbp, a=test-only on a CLOSED TREE - - MozReview-Commit-ID: 76qU9UjcROt - - --HG-- - extra : source : 6956f4fcbb7973e93c7314eb8bb9e7f8de93b96f - extra : amend_source : ed03aa30810d829dbf0951ccbc7aaab805afa280 - extra : intermediate-source : d5f57ad0a0fb5b362ed6abc150aa1038a1555fa5 ---- - js/src/builtin/TestingFunctions.cpp | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git js/src/builtin/TestingFunctions.cpp js/src/builtin/TestingFunctions.cpp -index cf2f0e3ecc2a..5cc776d0a7cc 100644 ---- js/src/builtin/TestingFunctions.cpp -+++ js/src/builtin/TestingFunctions.cpp -@@ -2199,6 +2199,13 @@ testingFunc_inIon(JSContext* cx, unsigned argc, Value* vp) - return true; - } - -+ if (cx->activation()->isWasm()) { -+ // Exited through wasm. Note this is false when the fast wasm->jit exit -+ // was taken, in which case we actually have jit frames on the stack. -+ args.rval().setBoolean(false); -+ return true; -+ } -+ - ScriptFrameIter iter(cx); - if (!iter.done() && iter.isIon()) { - // Reset the counter of the IonScript's script. diff --git a/www/waterfox/files/patch-bug1404760 b/www/waterfox/files/patch-bug1404760 deleted file mode 100644 index 68cf6f5f73b6..000000000000 --- a/www/waterfox/files/patch-bug1404760 +++ /dev/null @@ -1,65 +0,0 @@ -commit a73710615fe2 -Author: Lars T Hansen -Date: Mon Oct 2 10:45:26 2017 +0200 - - Bug 1404760 - wasm baseline, disable branch optimization for int64 on x86 to avoid register starvation. r=bbouvier, a=ritu - - --HG-- - extra : source : c80e87f3242679c9e9548592f27173871824b681 - extra : intermediate-source : 12d671fcc1f1c25898ebb0723e1eb0b20b5b4838 ---- - .../jit-test/tests/wasm/regress/baseline-i64-opt-cmp.js | 16 ++++++++++++++++ - js/src/wasm/WasmBaselineCompile.cpp | 14 ++++++++------ - 2 files changed, 24 insertions(+), 6 deletions(-) - -diff --git js/src/jit-test/tests/wasm/regress/baseline-i64-opt-cmp.js js/src/jit-test/tests/wasm/regress/baseline-i64-opt-cmp.js -new file mode 100644 -index 000000000000..aad892558a15 ---- /dev/null -+++ js/src/jit-test/tests/wasm/regress/baseline-i64-opt-cmp.js -@@ -0,0 +1,16 @@ -+// Bug 1404760: Optimized compare-and-branch with a preserved value would fail -+// the baseline compiler on x86 debug builds (and would just generate bad code -+// on non-debug builds) because of register starvation. -+ -+wasmEvalText( -+ `(module -+ (func $run (param i64) (param i64) (result i64) -+ block i64 -+ i64.const 1 -+ (i64.lt_s (get_local 0) (get_local 1)) -+ br_if 0 -+ drop -+ i64.const 2 -+ end) -+ (export "run" $run))` -+); -diff --git js/src/wasm/WasmBaselineCompile.cpp js/src/wasm/WasmBaselineCompile.cpp -index bf83cbb3f818..50de676de678 100644 ---- js/src/wasm/WasmBaselineCompile.cpp -+++ js/src/wasm/WasmBaselineCompile.cpp -@@ -5212,16 +5212,18 @@ BaseCompiler::sniffConditionalControlCmp(Cond compareOp, ValType operandType) - { - MOZ_ASSERT(latentOp_ == LatentOp::None, "Latent comparison state not properly reset"); - -+#ifdef JS_CODEGEN_X86 -+ // On x86, latent i64 binary comparisons use too many registers: the -+ // reserved join register and the lhs and rhs operands require six, but we -+ // only have five. -+ if (operandType == ValType::I64) -+ return false; -+#endif -+ - OpBytes op; - iter_.peekOp(&op); - switch (op.b0) { - case uint16_t(Op::Select): --#ifdef JS_CODEGEN_X86 -- // On x86, with only 5 available registers, a latent i64 binary -- // comparison takes 4 leaving only 1 which is not enough for select. -- if (operandType == ValType::I64) -- return false; --#endif - MOZ_FALLTHROUGH; - case uint16_t(Op::BrIf): - case uint16_t(Op::If): diff --git a/www/waterfox/files/patch-bug1404910 b/www/waterfox/files/patch-bug1404910 deleted file mode 100644 index 1157ce538381..000000000000 --- a/www/waterfox/files/patch-bug1404910 +++ /dev/null @@ -1,170 +0,0 @@ -commit 2c8bf0ecbc5d -Author: Andrea Marchesini -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 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 @@ -+ -+ -+ -+ -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 @@ -+ -+ -+ -+ Bug 1252751 -+ -+ -+ -+ -+
-+ -+ -+ -+ diff --git a/www/waterfox/files/patch-bug1405199 b/www/waterfox/files/patch-bug1405199 deleted file mode 100644 index 6e7ffc1c0d44..000000000000 --- a/www/waterfox/files/patch-bug1405199 +++ /dev/null @@ -1,45 +0,0 @@ -commit a8e2534607cc -Author: Honza Bambas -Date: Mon Oct 9 07:50:00 2017 -0400 - - Bug 1405199 - Update result principal URI on the new channel when nsBaseChannel redirects. r=bz, a=ritu - - --HG-- - extra : source : 41697bca82fb1cb74c3617f8c7496cebacf81efc ---- - netwerk/base/nsBaseChannel.cpp | 22 ++++++++++++++++++++++ - 1 file changed, 22 insertions(+) - -diff --git netwerk/base/nsBaseChannel.cpp netwerk/base/nsBaseChannel.cpp -index 07a12c8fa5b6..b839bc6e1b7e 100644 ---- netwerk/base/nsBaseChannel.cpp -+++ netwerk/base/nsBaseChannel.cpp -@@ -106,6 +106,28 @@ nsBaseChannel::Redirect(nsIChannel *newChannel, uint32_t redirectFlags, - new nsRedirectHistoryEntry(uriPrincipal, nullptr, EmptyCString()); - - newLoadInfo->AppendRedirectHistoryEntry(entry, isInternalRedirect); -+ -+ // Ensure the channel's loadInfo's result principal URI so that it's -+ // either non-null or updated to the redirect target URI. -+ // We must do this because in case the loadInfo's result principal URI -+ // is null, it would be taken from OriginalURI of the channel. But we -+ // overwrite it with the whole redirect chain first URI before opening -+ // the target channel, hence the information would be lost. -+ // If the protocol handler that created the channel wants to use -+ // the originalURI of the channel as the principal URI, it has left -+ // the result principal URI on the load info null. -+ nsCOMPtr resultPrincipalURI; -+ -+ nsCOMPtr existingLoadInfo = newChannel->GetLoadInfo(); -+ if (existingLoadInfo) { -+ existingLoadInfo->GetResultPrincipalURI(getter_AddRefs(resultPrincipalURI)); -+ } -+ if (!resultPrincipalURI) { -+ newChannel->GetOriginalURI(getter_AddRefs(resultPrincipalURI)); -+ } -+ -+ newLoadInfo->SetResultPrincipalURI(resultPrincipalURI); -+ - newChannel->SetLoadInfo(newLoadInfo); - } - else { diff --git a/www/waterfox/files/patch-bug1405267 b/www/waterfox/files/patch-bug1405267 deleted file mode 100644 index 63fc86f584b9..000000000000 --- a/www/waterfox/files/patch-bug1405267 +++ /dev/null @@ -1,32 +0,0 @@ -commit 28e925727f61 -Author: Chris Coulson -Date: Tue Oct 3 04:58:00 2017 -0400 - - Bug 1405267 - Don't stub gdk_window_get_window_type in mozgtk2. r=karlt, a=ritu - - --HG-- - extra : source : d06512adfab5cc90d985a1b814e8ba3dc4b81fff ---- - widget/gtk/mozgtk/mozgtk.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git widget/gtk/mozgtk/mozgtk.c widget/gtk/mozgtk/mozgtk.c -index 7285b7f001ac..9a5498a173fd 100644 ---- widget/gtk/mozgtk/mozgtk.c -+++ widget/gtk/mozgtk/mozgtk.c -@@ -95,6 +95,7 @@ STUB(gdk_window_get_update_area) - STUB(gdk_window_get_user_data) - STUB(gdk_window_get_visual) - STUB(gdk_window_get_width) -+STUB(gdk_window_get_window_type) - STUB(gdk_window_hide) - STUB(gdk_window_input_shape_combine_region) - STUB(gdk_window_invalidate_rect) -@@ -520,7 +521,6 @@ STUB(gdk_error_trap_pop_ignored) - STUB(gdk_event_get_source_device) - STUB(gdk_screen_get_monitor_workarea) - STUB(gdk_window_get_type) --STUB(gdk_window_get_window_type) - STUB(gdk_x11_window_get_xid) - STUB(gdk_x11_display_get_type) - STUB(gdk_wayland_display_get_type) diff --git a/www/waterfox/files/patch-bug1405364 b/www/waterfox/files/patch-bug1405364 deleted file mode 100644 index b3cec01bcb64..000000000000 --- a/www/waterfox/files/patch-bug1405364 +++ /dev/null @@ -1,84 +0,0 @@ -commit bc3e9c9c8230 -Author: Andrew Osmond -Date: Mon Oct 30 06:58:04 2017 -0400 - - Bug 1405364 - ImageBridgeParent::GetInstance should not mutate sImageBridges for lookups. r=sotaro a=sylvestre - - --HG-- - extra : amend_source : 6121399940a53f45027923e0e3f5a517722036ed - extra : transplant_source : %D1%06%8F%0D%25%B3%FD%82%3D%C9%0A%5C%9B%C7%3B%15%9C%A7%EC%91 ---- - gfx/layers/ipc/ImageBridgeParent.cpp | 18 ++++++++++++------ - gfx/layers/ipc/ImageBridgeParent.h | 5 +++-- - 2 files changed, 15 insertions(+), 8 deletions(-) - -diff --git gfx/layers/ipc/ImageBridgeParent.cpp gfx/layers/ipc/ImageBridgeParent.cpp -index 745576a3a7b3..8f8f60ffcd78 100644 ---- gfx/layers/ipc/ImageBridgeParent.cpp -+++ gfx/layers/ipc/ImageBridgeParent.cpp -@@ -42,7 +42,7 @@ using namespace mozilla::ipc; - using namespace mozilla::gfx; - using namespace mozilla::media; - --std::map ImageBridgeParent::sImageBridges; -+ImageBridgeParent::ImageBridgeMap ImageBridgeParent::sImageBridges; - - StaticAutoPtr sImageBridgesLock; - -@@ -366,8 +366,9 @@ ImageBridgeParent::NotifyImageComposites(nsTArraySendPendingAsyncMessages(); -- if (!GetInstance(pid)->SendDidComposite(notifications)) { -+ RefPtr bridge = GetInstance(pid); -+ bridge->SendPendingAsyncMessages(); -+ if (!bridge->SendDidComposite(notifications)) { - ok = false; - } - i = end; -@@ -382,13 +383,18 @@ ImageBridgeParent::DeferredDestroy() - mSelfRef = nullptr; // "this" ImageBridge may get deleted here. - } - --RefPtr -+already_AddRefed - ImageBridgeParent::GetInstance(ProcessId aId) - { - MOZ_ASSERT(CompositorThreadHolder::IsInCompositorThread()); - MonitorAutoLock lock(*sImageBridgesLock); -- NS_ASSERTION(sImageBridges.count(aId) == 1, "ImageBridgeParent for the process"); -- return sImageBridges[aId]; -+ ImageBridgeMap::const_iterator i = sImageBridges.find(aId); -+ if (i == sImageBridges.end()) { -+ NS_ASSERTION(false, "Cannot find image bridge for process!"); -+ return nullptr; -+ } -+ RefPtr bridge = i->second; -+ return bridge.forget(); - } - - bool -diff --git gfx/layers/ipc/ImageBridgeParent.h gfx/layers/ipc/ImageBridgeParent.h -index 7475b67e356d..3edd1f8861ee 100644 ---- gfx/layers/ipc/ImageBridgeParent.h -+++ gfx/layers/ipc/ImageBridgeParent.h -@@ -114,7 +114,7 @@ public: - - virtual bool IsSameProcess() const override; - -- static RefPtr GetInstance(ProcessId aId); -+ static already_AddRefed GetInstance(ProcessId aId); - - static bool NotifyImageComposites(nsTArray& aNotifications); - -@@ -140,7 +140,8 @@ private: - /** - * Map of all living ImageBridgeParent instances - */ -- static std::map sImageBridges; -+ typedef std::map ImageBridgeMap; -+ static ImageBridgeMap sImageBridges; - - RefPtr mCompositorThreadHolder; - }; diff --git a/www/waterfox/files/patch-bug1405377 b/www/waterfox/files/patch-bug1405377 deleted file mode 100644 index 4f6a39347fbc..000000000000 --- a/www/waterfox/files/patch-bug1405377 +++ /dev/null @@ -1,31 +0,0 @@ -commit 3036b2933fde -Author: Gijs Kruitbosch -Date: Tue Oct 3 19:29:36 2017 +0100 - - Bug 1405377 - Remove trailing separator in recently closed tabs/windows subviews. r=mikedeboer, a=ritu - - The third param of 'getTabsFragment' and 'getWindowsFragment' toggles whether the 'restore all' item - gets prefixed (true) or suffixed (false). The prefixed version doesn't get a separator, so this - seems like the simplest fix. - - MozReview-Commit-ID: BzKWvndWUMp - - --HG-- - extra : source : ed7b92c9eca5e1faa1b193918f0b9ddf7fc9c0e5 ---- - browser/components/customizableui/CustomizableWidgets.jsm | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git browser/components/customizableui/CustomizableWidgets.jsm browser/components/customizableui/CustomizableWidgets.jsm -index fb12d40da42d..b197d2d72fdc 100644 ---- browser/components/customizableui/CustomizableWidgets.jsm -+++ browser/components/customizableui/CustomizableWidgets.jsm -@@ -215,7 +215,7 @@ const CustomizableWidgets = [ - - let utils = RecentlyClosedTabsAndWindowsMenuUtils; - let method = `get${viewType}Fragment`; -- let fragment = utils[method](window, "toolbarbutton"); -+ let fragment = utils[method](window, "toolbarbutton", true); - let elementCount = fragment.childElementCount; - this._panelMenuView._setEmptyPopupStatus(panelview, !elementCount); - if (!elementCount) diff --git a/www/waterfox/files/patch-bug1405635 b/www/waterfox/files/patch-bug1405635 deleted file mode 100644 index c4a015d63fb1..000000000000 --- a/www/waterfox/files/patch-bug1405635 +++ /dev/null @@ -1,100 +0,0 @@ -commit c10a94980921 -Author: Emilio Cobos Álvarez -Date: Thu Oct 5 05:49:06 2017 -0500 - - Bug 1405635 - style: Use the flattened tree parent to find the closest non-nac ancestor of an element. r=bzbarsky, a=ritu - - This only matters for document level NAC like canvas custom content, in which - case otherwise we inherit from the document element (which is wrong). - - Source-Repo: https://github.com/servo/servo - Source-Revision: 35e84c5cdf9cad0f16f94525d425a3b881b3b524 - - --HG-- - extra : source : 657529d410eb93f3e89cde5e11b9ca7a6f882d39 ---- - servo/components/style/gecko/wrapper.rs | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git servo/components/style/gecko/wrapper.rs servo/components/style/gecko/wrapper.rs -index 1d6864a482bd..353bbeeedffc 100644 ---- servo/components/style/gecko/wrapper.rs -+++ servo/components/style/gecko/wrapper.rs -@@ -934,7 +934,7 @@ impl<'le> TElement for GeckoElement<'le> { - - fn closest_non_native_anonymous_ancestor(&self) -> Option { - debug_assert!(self.is_native_anonymous()); -- let mut parent = match self.parent_element() { -+ let mut parent = match self.traversal_parent() { - Some(e) => e, - None => return None, - }; -@@ -944,7 +944,7 @@ impl<'le> TElement for GeckoElement<'le> { - return Some(parent); - } - -- parent = match parent.parent_element() { -+ parent = match parent.traversal_parent() { - Some(p) => p, - None => return None, - }; -commit efb04b1d1114 -Author: Emilio Cobos Álvarez -Date: Thu Oct 5 01:40:48 2017 +0200 - - Bug 1405635 - Test that custom content doesn't inherit from the root element. r=bholley, a=ritu - - MozReview-Commit-ID: GvjsdQk5Wt4 - - --HG-- - extra : source : 777faf67f590f1d1c64f1b09601a7974a8f627ce ---- - layout/style/test/mochitest.ini | 2 ++ - .../test/test_custom_content_inheritance.html | 26 ++++++++++++++++++++++ - 2 files changed, 28 insertions(+) - -diff --git layout/style/test/mochitest.ini layout/style/test/mochitest.ini -index dafe0434981c..5a8beed3b103 100644 ---- layout/style/test/mochitest.ini -+++ layout/style/test/mochitest.ini -@@ -194,6 +194,8 @@ skip-if = toolkit == 'android' #bug 536603 - [test_css_parse_error_smoketest.html] - [test_css_supports.html] - [test_css_supports_variables.html] -+[test_custom_content_inheritance.html] -+skip-if = !stylo # Gecko fails this and messes up inheritance - [test_default_bidi_css.html] - [test_default_computed_style.html] - [test_descriptor_storage.html] -diff --git layout/style/test/test_custom_content_inheritance.html layout/style/test/test_custom_content_inheritance.html -new file mode 100644 -index 000000000000..ccbce86574bb ---- /dev/null -+++ layout/style/test/test_custom_content_inheritance.html -@@ -0,0 +1,26 @@ -+ -+Test for custom content inheritance -+ -+ -+ diff --git a/www/waterfox/files/patch-bug1405655 b/www/waterfox/files/patch-bug1405655 deleted file mode 100644 index 0a2d6529a5db..000000000000 --- a/www/waterfox/files/patch-bug1405655 +++ /dev/null @@ -1,256 +0,0 @@ -commit 5b5983d8528a -Author: Felipe Gomes -Date: Tue Oct 17 12:10:31 2017 -0200 - - Bug 1405655 - Only hide Flash Activation overlay UI if the entire plugin is covered. r=dthayer, a=ritu - - As opposed to right now where we hide if any of the corners or the center of the plugin is covered. - - MozReview-Commit-ID: 9mOVXYyV1Il - - --HG-- - extra : source : a6aaaf9cb7d3a4f3baa430cfa88671f0acabed6c ---- - browser/base/content/test/plugins/browser.ini | 2 + - .../test/plugins/browser_CTP_shouldShowOverlay.js | 56 ++++++++++ - .../test/plugins/plugin_shouldShowOverlay.html | 116 +++++++++++++++++++++ - browser/modules/PluginContent.jsm | 13 ++- - 4 files changed, 180 insertions(+), 7 deletions(-) - -diff --git browser/base/content/test/plugins/browser.ini browser/base/content/test/plugins/browser.ini -index 56f5fba1a9d0..9b3a518ecb7c 100644 ---- browser/base/content/test/plugins/browser.ini -+++ browser/base/content/test/plugins/browser.ini -@@ -29,6 +29,7 @@ support-files = - plugin_overlayed.html - plugin_positioned.html - plugin_simple_blank.swf -+ plugin_shouldShowOverlay.html - plugin_small.html - plugin_small_2.html - plugin_syncRemoved.html -@@ -76,6 +77,7 @@ tags = blocklist - tags = blocklist - [browser_CTP_resize.js] - tags = blocklist -+[browser_CTP_shouldShowOverlay.js] - [browser_CTP_zoom.js] - tags = blocklist - [browser_blocking.js] -diff --git browser/base/content/test/plugins/browser_CTP_shouldShowOverlay.js browser/base/content/test/plugins/browser_CTP_shouldShowOverlay.js -new file mode 100644 -index 000000000000..6af674a0e5b2 ---- /dev/null -+++ browser/base/content/test/plugins/browser_CTP_shouldShowOverlay.js -@@ -0,0 +1,56 @@ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+"use strict"; -+ -+/* This test ensures that the click-to-play "Activate Plugin" overlay -+ * is shown when expected. -+ * All testcases are in the plugin_shouldShowOverlay.html file. -+ */ -+ -+var rootDir = getRootDirectory(gTestPath); -+const gTestRoot = rootDir.replace("chrome://mochitests/content/", "http://127.0.0.1:8888/"); -+ -+var gTestBrowser = null; -+ -+add_task(async function() { -+ registerCleanupFunction(function() { -+ clearAllPluginPermissions(); -+ setTestPluginEnabledState(Ci.nsIPluginTag.STATE_ENABLED, "Test Plug-in"); -+ gBrowser.removeCurrentTab(); -+ gTestBrowser = null; -+ }); -+}); -+ -+add_task(async function() { -+ gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser); -+ gTestBrowser = gBrowser.selectedBrowser; -+ -+ setTestPluginEnabledState(Ci.nsIPluginTag.STATE_CLICKTOPLAY, "Test Plug-in"); -+ -+ let popupNotification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser); -+ ok(!popupNotification, "Sanity check, should not have a click-to-play notification"); -+ -+ await promiseTabLoadEvent(gBrowser.selectedTab, gTestRoot + "plugin_shouldShowOverlay.html"); -+ -+ // Work around for delayed PluginBindingAttached -+ await promiseUpdatePluginBindings(gTestBrowser); -+ -+ await ContentTask.spawn(gTestBrowser, null, async function() { -+ let doc = content.document; -+ let testcases = doc.querySelectorAll(".testcase"); -+ -+ for (let testcase of testcases) { -+ let plugin = testcase.querySelector("object"); -+ Assert.ok(plugin, `plugin exists in ${testcase.id}`); -+ -+ let overlay = doc.getAnonymousElementByAttribute(plugin, "anonid", "main"); -+ Assert.ok(overlay, `overlay exists in ${testcase.id}`); -+ -+ let expectedVisibility = (testcase.getAttribute("shouldshow") == "true"); -+ Assert.ok(overlay.classList.contains("visible") == expectedVisibility, -+ `The expected visibility is correct in ${testcase.id}`); -+ } -+ }) -+}); -diff --git browser/base/content/test/plugins/plugin_shouldShowOverlay.html browser/base/content/test/plugins/plugin_shouldShowOverlay.html -new file mode 100644 -index 000000000000..24d07d164260 ---- /dev/null -+++ browser/base/content/test/plugins/plugin_shouldShowOverlay.html -@@ -0,0 +1,116 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+
-+ -+ -+
-+ -+
-+ -+ -+
-+ -+
-+ -+ -+
-+ -+
-+ -+
-+ -+
-+ -+
-+ -+
-+ -+
-+ -+
-+ -+
-+ -+
-+ -+ -+
-+ -+
-+ -+
-+ -+
-+ -+
-+ -+
-+ -+
-+ -+
-+
-+
-+
-+ -+
-+ -+
-+ -+
-+
-+
-+
-+ -+
-+ -+
-+ -+
-+
-+
-+
-+
-+ -+
-+ -+
-+ -+
-+ -+
-+ -+ -+ -diff --git browser/modules/PluginContent.jsm browser/modules/PluginContent.jsm -index 678369d7e3ec..6aec465a2955 100644 ---- browser/modules/PluginContent.jsm -+++ browser/modules/PluginContent.jsm -@@ -330,22 +330,21 @@ PluginContent.prototype = { - [right, bottom], - [centerX, centerY]]; - -- if (right <= 0 || top <= 0) { -- return false; -- } -- - let contentWindow = plugin.ownerGlobal; - let cwu = contentWindow.QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIDOMWindowUtils); - - for (let [x, y] of points) { -+ if (x < 0 || y < 0) { -+ continue; -+ } - let el = cwu.elementFromPoint(x, y, true, true); -- if (el !== plugin) { -- return false; -+ if (el === plugin) { -+ return true; - } - } - -- return true; -+ return false; - }, - - addLinkClickCallback(linkNode, callbackName /* callbackArgs...*/) { diff --git a/www/waterfox/files/patch-bug1405720 b/www/waterfox/files/patch-bug1405720 deleted file mode 100644 index c316067d398a..000000000000 --- a/www/waterfox/files/patch-bug1405720 +++ /dev/null @@ -1,122 +0,0 @@ -commit f0664b7a8e76 -Author: Gijs Kruitbosch -Date: Thu Oct 5 15:17:12 2017 +0100 - - Bug 1405720 - Ensure only 1 theme is ever shown as selected in customize mode. r=jaws, r=johannh, a=ritu - - The previous code here always set the `isActive` property on all themes. When writing the - patch for bug 1402981 I ran into issues because the default theme has an `isActive` property - anyway (it's a different type of object). So I tried to avoid setting `isActive` if it was - already present. Unfortunately, the result was that `isActive` values, once set, weren't - correctly updated. Worse, these values are (and were, prior to bug 1402981) persisted in - some cases. - - There's no point persisting these values, all that will happen is that they'll start - mismatching the 'real' state of the world (LightweightThemeManager.currentTheme). So instead, - let's just not set the `isActive` property at all, and rely solely on the ID of the current - theme (or the default theme's ID, now that we no longer support non-lightweight-themes) to - establish whether any of the themes should appear selected or not. - - MozReview-Commit-ID: 7rajS71FoQR - - --HG-- - extra : source : 4099fa94e3ba6728761655f0e11e7b65d573617d ---- - .../components/customizableui/CustomizeMode.jsm | 13 ++++------ - .../browser_1007336_lwthemes_in_customize_mode.js | 28 +++++++++++++++++++--- - 2 files changed, 30 insertions(+), 11 deletions(-) - -diff --git browser/components/customizableui/CustomizeMode.jsm browser/components/customizableui/CustomizeMode.jsm -index b0e31cad63fc..79f23079b1a0 100644 ---- browser/components/customizableui/CustomizeMode.jsm -+++ browser/components/customizableui/CustomizeMode.jsm -@@ -1358,9 +1358,10 @@ CustomizeMode.prototype = { - tbb.setAttribute("tooltiptext", aTheme.description); - tbb.setAttribute("tabindex", "0"); - tbb.classList.add("customization-lwtheme-menu-theme"); -- tbb.setAttribute("aria-checked", aTheme.isActive); -+ let isActive = activeThemeID == aTheme.id; -+ tbb.setAttribute("aria-checked", isActive); - tbb.setAttribute("role", "menuitemradio"); -- if (aTheme.isActive) { -+ if (isActive) { - tbb.setAttribute("active", "true"); - } - tbb.addEventListener("focus", previewTheme); -@@ -1374,12 +1375,8 @@ CustomizeMode.prototype = { - let themes = [aDefaultTheme]; - let lwts = LightweightThemeManager.usedThemes; - let currentLwt = LightweightThemeManager.currentTheme; -- // The lwts besides the builtin themes don't have an isActive property: -- for (let lwt of lwts) { -- if (!lwt.hasOwnProperty("isActive")) { -- lwt.isActive = !!currentLwt && (lwt.id == currentLwt.id); -- } -- } -+ -+ let activeThemeID = currentLwt ? currentLwt.id : DEFAULT_THEME_ID; - - // Move the current theme (if any) and the light/dark themes to the start: - let importantThemes = [LIGHT_THEME_ID, DARK_THEME_ID]; -diff --git browser/components/customizableui/test/browser_1007336_lwthemes_in_customize_mode.js browser/components/customizableui/test/browser_1007336_lwthemes_in_customize_mode.js -index 3ee8f9b8f697..7b94289c0177 100644 ---- browser/components/customizableui/test/browser_1007336_lwthemes_in_customize_mode.js -+++ browser/components/customizableui/test/browser_1007336_lwthemes_in_customize_mode.js -@@ -45,9 +45,25 @@ add_task(async function() { - is(header.nextSibling.nextSibling.nextSibling.theme.id, DARK_THEME_ID, - "The third theme should be the dark theme"); - -+ let themeChangedPromise = promiseObserverNotified("lightweight-theme-changed"); -+ header.nextSibling.nextSibling.doCommand(); // Select light theme -+ info("Clicked on light theme"); -+ await themeChangedPromise; -+ -+ popupShownPromise = popupShown(popup); -+ EventUtils.synthesizeMouseAtCenter(themesButton, {}); -+ info("Clicked on themes button a third time"); -+ await popupShownPromise; -+ -+ let activeThemes = popup.querySelectorAll("toolbarbutton.customization-lwtheme-menu-theme[active]"); -+ is(activeThemes.length, 1, "Exactly 1 theme should be selected"); -+ if (activeThemes.length > 0) { -+ is(activeThemes[0].theme.id, LIGHT_THEME_ID, "Light theme should be selected"); -+ } -+ - let firstLWTheme = recommendedHeader.nextSibling; - let firstLWThemeId = firstLWTheme.theme.id; -- let themeChangedPromise = promiseObserverNotified("lightweight-theme-changed"); -+ themeChangedPromise = promiseObserverNotified("lightweight-theme-changed"); - firstLWTheme.doCommand(); - info("Clicked on first theme"); - await themeChangedPromise; -@@ -57,6 +73,12 @@ add_task(async function() { - info("Clicked on themes button"); - await popupShownPromise; - -+ activeThemes = popup.querySelectorAll("toolbarbutton.customization-lwtheme-menu-theme[active]"); -+ is(activeThemes.length, 1, "Exactly 1 theme should be selected"); -+ if (activeThemes.length > 0) { -+ is(activeThemes[0].theme.id, firstLWThemeId, "First theme should be selected"); -+ } -+ - is(header.nextSibling.theme.id, DEFAULT_THEME_ID, "The first theme should be the Default theme"); - let installedThemeId = header.nextSibling.nextSibling.nextSibling.nextSibling.theme.id; - ok(installedThemeId.startsWith(firstLWThemeId), -@@ -78,7 +100,7 @@ add_task(async function() { - // ensure current theme isn't set to "Default" - popupShownPromise = popupShown(popup); - EventUtils.synthesizeMouseAtCenter(themesButton, {}); -- info("Clicked on themes button a second time"); -+ info("Clicked on themes button a fourth time"); - await popupShownPromise; - - firstLWTheme = recommendedHeader.nextSibling; -@@ -98,7 +120,7 @@ add_task(async function() { - await startCustomizing(); - popupShownPromise = popupShown(popup); - EventUtils.synthesizeMouseAtCenter(themesButton, {}); -- info("Clicked on themes button a second time"); -+ info("Clicked on themes button a fifth time"); - await popupShownPromise; - header = document.getElementById("customization-lwtheme-menu-header"); - is(header.hidden, false, "Header should never be hidden"); diff --git a/www/waterfox/files/patch-bug1405761 b/www/waterfox/files/patch-bug1405761 deleted file mode 100644 index fcd51bf2ca29..000000000000 --- a/www/waterfox/files/patch-bug1405761 +++ /dev/null @@ -1,109 +0,0 @@ -commit 0e2ac46fa12c -Author: Dragana Damjanovic -Date: Wed Oct 11 03:20:00 2017 -0400 - - Bug 1405761 - If the preload pref is disabled rel=preload should be shown as not supported. r=smaug, a=ritu - - --HG-- - extra : source : 1f4d35d137631cde34f318fac0c33421d5360dc3 ---- - dom/base/test/test_bug1222633.html | 4 +++- - dom/base/test/test_bug1222633_link_update.html | 4 +++- - dom/html/HTMLLinkElement.cpp | 19 ++++++++++++++++++- - modules/libpref/init/all.js | 2 +- - .../tools/wptrunner/wptrunner/browsers/firefox.py | 3 ++- - 5 files changed, 27 insertions(+), 5 deletions(-) - -diff --git dom/base/test/test_bug1222633.html dom/base/test/test_bug1222633.html -index 52fecff16e9b..099345dab0b7 100644 ---- dom/base/test/test_bug1222633.html -+++ dom/base/test/test_bug1222633.html -@@ -88,8 +88,10 @@ const CROSS_ORIGIN = "http://example.com" + SJS_PATH; - - SimpleTest.waitForExplicitFinish(); - -+SpecialPowers.pushPrefEnv({"set": [["network.preload", true]]}) -+ - // test same origin --testPreloadEvent(SAME_ORIGIN + "?statusCode=200&cacheControl=no-cache", false, false) -+.then(() => testPreloadEvent(SAME_ORIGIN + "?statusCode=200&cacheControl=no-cache", false, false)) - .then(() => testPreloadEvent(SAME_ORIGIN + "?statusCode=404&cacheControl=no-cache", false, false)) - .then(() => testPreloadEvent(SAME_ORIGIN + "?statusCode=200&cacheControl=max-age%3D120", false, true)) - .then(() => testPreloadEvent(SAME_ORIGIN + "?statusCode=404&cacheControl=max-age%3D120", false, false)) -diff --git dom/base/test/test_bug1222633_link_update.html dom/base/test/test_bug1222633_link_update.html -index 97508d3596cf..1f18284c9470 100644 ---- dom/base/test/test_bug1222633_link_update.html -+++ dom/base/test/test_bug1222633_link_update.html -@@ -122,8 +122,10 @@ const CROSS_ORIGIN = "http://example.com" + SJS_PATH; - - SimpleTest.waitForExplicitFinish(); - -+SpecialPowers.pushPrefEnv({"set": [["network.preload", true]]}) -+ - // Test changing as parameter from a wrong to a correct one. --testPreloadEventAsAttributeChange(SAME_ORIGIN + "?statusCode=200&cacheControl=max-age%3D120") -+.then(() => testPreloadEventAsAttributeChange(SAME_ORIGIN + "?statusCode=200&cacheControl=max-age%3D120")) - // Test changing type parameter from a wrong to a correct one for given as parameter. - .then(() => testPreloadEventAttributeChange(SAME_ORIGIN + "?statusCode=200&cacheControl=max-age%3D120", "type", "text/vtt", "image/png", false, true)) - // Test changing media parameter from a wrong to a correct one. -diff --git dom/html/HTMLLinkElement.cpp dom/html/HTMLLinkElement.cpp -index 810b47aed670..37b45ca03636 100644 ---- dom/html/HTMLLinkElement.cpp -+++ dom/html/HTMLLinkElement.cpp -@@ -408,11 +408,28 @@ static const DOMTokenListSupportedToken sSupportedRelValues[] = { - nullptr - }; - -+static const DOMTokenListSupportedToken sSupportedRelValuesNoPreload[] = { -+ // Keep this in sync with ToLinkMask in nsStyleLinkElement.cpp. -+ // "import" must come first because it's conditional. -+ "prefetch", -+ "dns-prefetch", -+ "stylesheet", -+ "next", -+ "alternate", -+ "preconnect", -+ "icon", -+ "search", -+ nullptr -+}; - nsDOMTokenList* - HTMLLinkElement::RelList() - { - if (!mRelList) { -- mRelList = new nsDOMTokenList(this, nsGkAtoms::rel, sSupportedRelValues); -+ if (Preferences::GetBool("network.preload")) { -+ mRelList = new nsDOMTokenList(this, nsGkAtoms::rel, sSupportedRelValues); -+ } else { -+ mRelList = new nsDOMTokenList(this, nsGkAtoms::rel, sSupportedRelValuesNoPreload); -+ } - } - return mRelList; - } -diff --git modules/libpref/init/all.js modules/libpref/init/all.js -index e83781623803..79a0ea89d6de 100644 ---- modules/libpref/init/all.js -+++ modules/libpref/init/all.js -@@ -2105,7 +2105,7 @@ pref("network.dir.format", 2); - // URLs). - pref("network.prefetch-next", true); - // enables the preloading (i.e., preloading of URLs). --pref("network.preload", true); -+pref("network.preload", false); - - // enables the predictive service - pref("network.predictor.enabled", true); -diff --git testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/firefox.py testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/firefox.py -index f869c82a8ed0..43da63c7ca4e 100644 ---- testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/firefox.py -+++ testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/firefox.py -@@ -190,7 +190,8 @@ class FirefoxBrowser(Browser): - "network.dns.localDomains": ",".join(hostnames), - "network.proxy.type": 0, - "places.history.enabled": False, -- "dom.send_after_paint_to_content": True}) -+ "dom.send_after_paint_to_content": True, -+ "network.preload": True}) - if self.e10s: - self.profile.set_preferences({"browser.tabs.remote.autostart": True}) - diff --git a/www/waterfox/files/patch-bug1405878 b/www/waterfox/files/patch-bug1405878 deleted file mode 100644 index fa3d058e234c..000000000000 --- a/www/waterfox/files/patch-bug1405878 +++ /dev/null @@ -1,120 +0,0 @@ -commit 87f3d592d92f -Author: Boris Zbarsky -Date: Mon Oct 9 14:49:19 2017 -0400 - - Bug 1405878 - Make sure to notify for our kids, if needed, before calling DoneAddingChildren in the XML content sink. r=hsivonen, a=sledru - - Once we call DoneAddingChildren, random code of various sorts will run, which - can flush our notification state. If that happens before we've notified on our - kids, but after we've popped the element we're closing off the element stack, - we will fail to ever notify on the kids. - - MozReview-Commit-ID: Ei7v5OobX8R - - --HG-- - extra : source : f144e1434312485cf9ee16a36d6159dbcb13a07d ---- - dom/xml/crashtests/1405878.xml | 11 +++++++++++ - dom/xml/crashtests/crashtests.list | 1 + - dom/xml/nsXMLContentSink.cpp | 18 +++++++++++------- - layout/reftests/bugs/1405878-1-ref.xml | 7 +++++++ - layout/reftests/bugs/1405878-1.xml | 6 ++++++ - layout/reftests/bugs/reftest.list | 1 + - 6 files changed, 37 insertions(+), 7 deletions(-) - -diff --git dom/xml/crashtests/1405878.xml dom/xml/crashtests/1405878.xml -new file mode 100644 -index 000000000000..12677ade938d ---- /dev/null -+++ dom/xml/crashtests/1405878.xml -@@ -0,0 +1,11 @@ -+ -+ -+ -+ -+ -+ -diff --git dom/xml/crashtests/crashtests.list dom/xml/crashtests/crashtests.list -index f18767d582c2..2c06ffc545ec 100644 ---- dom/xml/crashtests/crashtests.list -+++ dom/xml/crashtests/crashtests.list -@@ -10,3 +10,4 @@ load 453278.html - load 803586.xhtml - load 994740-1.xhtml - load 1038887.xhtml -+load 1405878.xml -diff --git dom/xml/nsXMLContentSink.cpp dom/xml/nsXMLContentSink.cpp -index 2593519aa44b..b04977d62cf1 100644 ---- dom/xml/nsXMLContentSink.cpp -+++ dom/xml/nsXMLContentSink.cpp -@@ -1071,6 +1071,17 @@ nsXMLContentSink::HandleEndElement(const char16_t *aName, - isTemplateElement, "Wrong element being closed"); - #endif - -+ // Make sure to notify on our kids before we call out to any other code that -+ // might reenter us and call FlushTags, in a state in which we've already -+ // popped "content" from the stack but haven't notified on its kids yet. -+ int32_t stackLen = mContentStack.Length(); -+ if (mNotifyLevel >= stackLen) { -+ if (numFlushed < content->GetChildCount()) { -+ NotifyAppend(content, numFlushed); -+ } -+ mNotifyLevel = stackLen - 1; -+ } -+ - result = CloseElement(content); - - if (mCurrentHead == content) { -@@ -1086,13 +1097,6 @@ nsXMLContentSink::HandleEndElement(const char16_t *aName, - MaybeStartLayout(false); - } - -- int32_t stackLen = mContentStack.Length(); -- if (mNotifyLevel >= stackLen) { -- if (numFlushed < content->GetChildCount()) { -- NotifyAppend(content, numFlushed); -- } -- mNotifyLevel = stackLen - 1; -- } - DidAddContent(); - - if (content->IsSVGElement(nsGkAtoms::svg)) { -diff --git layout/reftests/bugs/1405878-1-ref.xml layout/reftests/bugs/1405878-1-ref.xml -new file mode 100644 -index 000000000000..6d1dd199b41e ---- /dev/null -+++ layout/reftests/bugs/1405878-1-ref.xml -@@ -0,0 +1,7 @@ -+ -+ -+ -diff --git layout/reftests/bugs/1405878-1.xml layout/reftests/bugs/1405878-1.xml -new file mode 100644 -index 000000000000..3915711b1103 ---- /dev/null -+++ layout/reftests/bugs/1405878-1.xml -@@ -0,0 +1,6 @@ -+ -+ -+ -diff --git layout/reftests/bugs/reftest.list layout/reftests/bugs/reftest.list -index 52f8cb915cee..47c04cdf41d6 100644 ---- layout/reftests/bugs/reftest.list -+++ layout/reftests/bugs/reftest.list -@@ -2037,3 +2037,4 @@ needs-focus != 1377447-1.html 1377447-2.html - == 1380224-1.html 1380224-1-ref.html - == 1384065.html 1384065-ref.html - == 1384275-1.html 1384275-1-ref.html -+== 1405878-1.xml 1405878-1-ref.xml diff --git a/www/waterfox/files/patch-bug1406222 b/www/waterfox/files/patch-bug1406222 deleted file mode 100644 index 86efe7c15e63..000000000000 --- a/www/waterfox/files/patch-bug1406222 +++ /dev/null @@ -1,39 +0,0 @@ -commit 04dfc1bac3e0 -Author: Boris Zbarsky -Date: Fri Oct 6 01:53:12 2017 -0500 - - Bug 1406222 - servo: Don't assume that inputs to compute_style_with_inputs have any rules. r=heycam, a=ritu - - It could be a text style, which never has any rules attached to it. - - Source-Repo: https://github.com/servo/servo - Source-Revision: 117dbfaac20d8a388cf3cf5d2bc103b9d6249ee8 - - --HG-- - extra : source : 97fcd35b0d3792e7305bcb46b303ce409b30d23e - extra : histedit_source : 72acaec12ed99fa306148b7679c682abc0abaeea ---- - servo/components/style/stylist.rs | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git servo/components/style/stylist.rs servo/components/style/stylist.rs -index b40c5825a55c..e6feb6f26d15 100644 ---- servo/components/style/stylist.rs -+++ servo/components/style/stylist.rs -@@ -896,12 +896,12 @@ impl Stylist { - // We need to compute visited values if we have visited rules or if our - // parent has visited values. - let visited_values = if inputs.visited_rules.is_some() || parent_style.get_visited_style().is_some() { -- // Slightly annoying: we know that inputs has either rules or -- // visited rules, but we can't do inputs.rules() up front because -- // maybe it just has visited rules, so can't unwrap_or. -+ // At this point inputs may have visited rules, or rules, or both, -+ // or neither (e.g. if it's a text style it may have neither). So -+ // we have to be a bit careful here. - let rule_node = match inputs.visited_rules.as_ref() { - Some(rules) => rules, -- None => inputs.rules.as_ref().unwrap(), -+ None => inputs.rules.as_ref().unwrap_or(self.rule_tree().root()), - }; - let inherited_style; - let inherited_style_ignoring_first_line; diff --git a/www/waterfox/files/patch-bug1406229 b/www/waterfox/files/patch-bug1406229 deleted file mode 100644 index defa50654997..000000000000 --- a/www/waterfox/files/patch-bug1406229 +++ /dev/null @@ -1,32 +0,0 @@ -commit 2e9ce146b6b5 -Author: Shane Caraveo -Date: Fri Oct 6 16:58:15 2017 -0700 - - Bug 1406229 - Fix autocomplete crash in panels when window is closed during event. r=mak, a=ritu - - MozReview-Commit-ID: 6TrLuwrk2nD - - --HG-- - extra : source : 118b67c940dc554a4adf6fb397db775861962c68 ---- - toolkit/components/autocomplete/nsAutoCompleteController.cpp | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git toolkit/components/autocomplete/nsAutoCompleteController.cpp toolkit/components/autocomplete/nsAutoCompleteController.cpp -index 3876380201f6..ba5287f1fabd 100644 ---- toolkit/components/autocomplete/nsAutoCompleteController.cpp -+++ toolkit/components/autocomplete/nsAutoCompleteController.cpp -@@ -367,6 +367,13 @@ nsAutoCompleteController::HandleEnter(bool aIsPopupSelection, - - // Stop the search, and handle the enter. - StopSearch(); -+ // StopSearch() can call PostSearchCleanup() which might result -+ // in a blur event, which could null out mInput, so we need to check it -+ // again. See bug #408463 for more details -+ if (!mInput) { -+ return NS_OK; -+ } -+ - EnterMatch(aIsPopupSelection, aEvent); - - return NS_OK; diff --git a/www/waterfox/files/patch-bug1406254 b/www/waterfox/files/patch-bug1406254 deleted file mode 100644 index 15337c4be605..000000000000 --- a/www/waterfox/files/patch-bug1406254 +++ /dev/null @@ -1,155 +0,0 @@ -commit e07fe5183b75 -Author: J. Ryan Stinnett -Date: Wed Oct 11 18:50:23 2017 -0500 - - Bug 1406254 - servo: Clear visited rules for text inheritance. r=emilio, a=ritu - - Source-Repo: https://github.com/servo/servo - Source-Revision: dbf0991f8cab54516c5b0211e1818a16cfbf9e19 - MozReview-Commit-ID: LP8VmxRopA4 ---- - servo/components/style/properties/gecko.mako.rs | 2 +- - servo/components/style/properties/properties.mako.rs | 16 ++++++++++++++-- - 2 files changed, 15 insertions(+), 3 deletions(-) - -diff --git servo/components/style/properties/gecko.mako.rs servo/components/style/properties/gecko.mako.rs -index d7e5496971e3..090a31ff9d4b 100644 ---- servo/components/style/properties/gecko.mako.rs -+++ servo/components/style/properties/gecko.mako.rs -@@ -323,7 +323,7 @@ impl ComputedValuesInner { - } - - /// Clone the visited style. Used for inheriting parent styles in -- /// StyleBuilder::for_inheritance. -+ /// StyleBuilder::for_derived_style. - pub fn clone_visited_style(&self) -> Option> { - self.visited_style.as_ref().map(|x| x.clone_arc()) - } -diff --git servo/components/style/properties/properties.mako.rs servo/components/style/properties/properties.mako.rs -index 269bf0dbbbb5..80238450a9c5 100644 ---- servo/components/style/properties/properties.mako.rs -+++ servo/components/style/properties/properties.mako.rs -@@ -2170,7 +2170,7 @@ impl ComputedValuesInner { - } - - /// Clone the visited style. Used for inheriting parent styles in -- /// StyleBuilder::for_inheritance. -+ /// StyleBuilder::for_derived_style. - pub fn clone_visited_style(&self) -> Option> { - self.visited_style.clone() - } -@@ -2830,6 +2830,18 @@ impl<'a> StyleBuilder<'a> { - parent: &'a ComputedValues, - pseudo: Option<<&'a PseudoElement>, - ) -> Self { -+ // Rebuild the visited style from the parent, ensuring that it will also -+ // not have rules. This matches the unvisited style that will be -+ // produced by this builder. This assumes that the caller doesn't need -+ // to adjust or process visited style, so we can just build visited -+ // style here for simplicity. -+ let visited_style = parent.get_visited_style().map(|style| { -+ Self::for_inheritance( -+ device, -+ style, -+ pseudo, -+ ).build() -+ }); - // FIXME(emilio): This Some(parent) here is inconsistent with what we - // usually do if `parent` is the default computed values, but that's - // fine, and we want to eventually get rid of it. -@@ -2844,7 +2856,7 @@ impl<'a> StyleBuilder<'a> { - parent.writing_mode, - parent.font_computation_data, - parent.flags, -- parent.clone_visited_style() -+ visited_style, - ) - } - -commit d8586d78bd43 -Author: J. Ryan Stinnett -Date: Wed Oct 11 15:33:14 2017 -0500 - - Bug 1406254 - Visited reftest for ::first-line inheritance. r=emilio, a=ritu - - MozReview-Commit-ID: 4ZOlVvBuSfT ---- - .../css-visited/color-on-visited-text-1-ref.html | 16 ++++++++++++++++ - .../css-visited/color-on-visited-text-1.html | 20 ++++++++++++++++++++ - layout/style/test/moz.build | 2 ++ - layout/style/test/test_visited_reftests.html | 1 + - 4 files changed, 39 insertions(+) - -diff --git layout/reftests/css-visited/color-on-visited-text-1-ref.html layout/reftests/css-visited/color-on-visited-text-1-ref.html -new file mode 100644 -index 000000000000..b144767ce76e ---- /dev/null -+++ layout/reftests/css-visited/color-on-visited-text-1-ref.html -@@ -0,0 +1,16 @@ -+ -+ -+
Visited
-+
Visited with span
-+
Visited with inner unvisited
-+
Visited with inner visited
-diff --git layout/reftests/css-visited/color-on-visited-text-1.html layout/reftests/css-visited/color-on-visited-text-1.html -new file mode 100644 -index 000000000000..d9dab8f3b8a7 ---- /dev/null -+++ layout/reftests/css-visited/color-on-visited-text-1.html -@@ -0,0 +1,20 @@ -+ -+ -+Visited -+Visited with span -+Visited with inner unvisited -+Visited with inner visited -diff --git layout/style/test/moz.build layout/style/test/moz.build -index fa646ca16dd3..74fe23260aa7 100644 ---- layout/style/test/moz.build -+++ layout/style/test/moz.build -@@ -60,6 +60,8 @@ TEST_HARNESS_FILES.testing.mochitest.tests.layout.style.test['css-visited'] += [ - '/layout/reftests/css-visited/color-on-visited-1-ref.html', - '/layout/reftests/css-visited/color-on-visited-1.html', - '/layout/reftests/css-visited/color-on-visited-before-1.html', -+ '/layout/reftests/css-visited/color-on-visited-text-1-ref.html', -+ '/layout/reftests/css-visited/color-on-visited-text-1.html', - '/layout/reftests/css-visited/column-rule-1-notref.html', - '/layout/reftests/css-visited/column-rule-1-ref.html', - '/layout/reftests/css-visited/column-rule-1.html', -diff --git layout/style/test/test_visited_reftests.html layout/style/test/test_visited_reftests.html -index aea857f031d2..850d35bae867 100644 ---- layout/style/test/test_visited_reftests.html -+++ layout/style/test/test_visited_reftests.html -@@ -38,6 +38,7 @@ var gTests = [ - "== color-on-link-before-1.html color-on-link-1-ref.html", - "== color-on-visited-1.html color-on-visited-1-ref.html", - "== color-on-visited-before-1.html color-on-visited-1-ref.html", -+ "== color-on-visited-text-1.html color-on-visited-text-1-ref.html", - "!= content-color-on-link-before-1-ref.html content-color-on-visited-before-1-ref.html", - "== content-color-on-link-before-1.html content-color-on-link-before-1-ref.html", - "== content-color-on-visited-before-1.html content-color-on-visited-before-1-ref.html", diff --git a/www/waterfox/files/patch-bug1406396 b/www/waterfox/files/patch-bug1406396 deleted file mode 100644 index 40d5e3c13a6b..000000000000 --- a/www/waterfox/files/patch-bug1406396 +++ /dev/null @@ -1,211 +0,0 @@ -commit 45ffbc50f1f2 -Author: David Keeler -Date: Fri Oct 13 11:27:30 2017 -0700 - - Bug 1406396 - Work around NSS utils potentially loading spurious root cert modules. r=mgoodwin, a=ritu, l10n=flod - - NSS command-line utilities may add a built-in root certificate module with the - name "Root Certs" if run on a profile that has a copy of the module file (which - is an unexpected configuration in general for Firefox). This can cause breakage. - To work around this, PSM now simply deletes any module named "Root Certs" at - startup. In an effort to prevent PSM from deleting unrelated modules - coincidentally named "Root Certs", we also prevent the user from using the - Firefox UI to name modules "Root Certs". - - MozReview-Commit-ID: ABja3wpShO9 - - --HG-- - extra : histedit_source : 3f8a20980a1f7fbc838b610763369af3ddf95e16 ---- - security/certverifier/NSSCertDBTrustDomain.cpp | 6 +++++ - .../locales/en-US/chrome/pippki/pippki.properties | 5 ++++ - .../manager/pki/resources/content/load_device.js | 17 ++++++++++++ - .../manager/pki/resources/content/load_device.xul | 4 ++- - security/manager/ssl/PKCS11ModuleDB.cpp | 11 ++++++++ - .../browser/browser_loadPKCS11Module_ui.js | 30 ++++++++++++++++++++++ - .../manager/ssl/tests/unit/test_pkcs11_moduleDB.js | 28 ++++++++++++++++++++ - .../manager/ssl/tests/unit/xpcshell-smartcards.ini | 1 + - 8 files changed, 101 insertions(+), 1 deletion(-) - -diff --git security/certverifier/NSSCertDBTrustDomain.cpp security/certverifier/NSSCertDBTrustDomain.cpp -index a352d928a3c9..229a0b5df28c 100644 ---- security/certverifier/NSSCertDBTrustDomain.cpp -+++ security/certverifier/NSSCertDBTrustDomain.cpp -@@ -1216,6 +1216,12 @@ LoadLoadableRoots(const nsCString& dir, const nsCString& modNameUTF8) - // the return value would be detrimental in that case. - int unusedModType; - Unused << SECMOD_DeleteModule(modNameUTF8.get(), &unusedModType); -+ // Some NSS command-line utilities will load a roots module under the name -+ // "Root Certs" if there happens to be a `DLL_PREFIX "nssckbi" DLL_SUFFIX` -+ // file in the directory being operated on. In some cases this can cause us to -+ // fail to load our roots module. In these cases, deleting the "Root Certs" -+ // module allows us to load the correct one. See bug 1406396. -+ Unused << SECMOD_DeleteModule("Root Certs", &unusedModType); - - nsAutoCString fullLibraryPath; - if (!dir.IsEmpty()) { -diff --git security/manager/locales/en-US/chrome/pippki/pippki.properties security/manager/locales/en-US/chrome/pippki/pippki.properties -index 4bf67da7bab2..163384651067 100644 ---- security/manager/locales/en-US/chrome/pippki/pippki.properties -+++ security/manager/locales/en-US/chrome/pippki/pippki.properties -@@ -185,3 +185,8 @@ addExceptionCheckingShort=Checking Information - addExceptionCheckingLong2=Attempting to identify this site… - addExceptionNoCertShort=No Information Available - addExceptionNoCertLong2=Unable to obtain identification status for this site. -+ -+# Load Module Dialog -+loadModuleHelp_emptyModuleName=The module name cannot be empty. -+# LOCALIZATION NOTE(loadModuleHelp_rootCertsModuleName): Do not translate 'Root Certs' -+loadModuleHelp_rootCertsModuleName=‘Root Certs‘ is reserved and cannot be used as the module name. -diff --git security/manager/pki/resources/content/load_device.js security/manager/pki/resources/content/load_device.js -index b3b020236b93..08831f16e27e 100644 ---- security/manager/pki/resources/content/load_device.js -+++ security/manager/pki/resources/content/load_device.js -@@ -51,3 +51,20 @@ function onDialogAccept() { - - return true; - } -+ -+function validateModuleName() { -+ let bundle = document.getElementById("pippki_bundle"); -+ let name = document.getElementById("device_name").value; -+ let helpText = document.getElementById("helpText"); -+ helpText.value = ""; -+ let dialogNode = document.querySelector("dialog"); -+ dialogNode.removeAttribute("buttondisabledaccept"); -+ if (name == "") { -+ helpText.value = bundle.getString("loadModuleHelp_emptyModuleName"); -+ dialogNode.setAttribute("buttondisabledaccept", true); -+ } -+ if (name == "Root Certs") { -+ helpText.value = bundle.getString("loadModuleHelp_rootCertsModuleName"); -+ dialogNode.setAttribute("buttondisabledaccept", true); -+ } -+} -diff --git security/manager/pki/resources/content/load_device.xul security/manager/pki/resources/content/load_device.xul -index b3a82df7ac57..f7cfca3cacf7 100644 ---- security/manager/pki/resources/content/load_device.xul -+++ security/manager/pki/resources/content/load_device.xul -@@ -29,7 +29,8 @@ - - - - -+