Internal change
PiperOrigin-RevId: 166338392
Change-Id: I364a3dfe5242bd4023b5ff2387cabb26111d48b4
diff --git a/import.sh b/import.sh
index 5b2f397..618f181 100644
--- a/import.sh
+++ b/import.sh
@@ -4,7 +4,7 @@
top=/tmp/chromium
mkdir $top
prefix=https://chromium.googlesource.com/chromium/src.git/+archive
-for version in 58.0.3029.110 59.0.3071.115
+for version in 59.0.3071.115 60.0.3112.101
do
mkdir $top/$version
cd $top/$version
diff --git a/src/base/strings/string16.cc b/src/base/strings/string16.cc
index 2e749a3..2139034 100644
--- a/src/base/strings/string16.cc
+++ b/src/base/strings/string16.cc
@@ -4,7 +4,7 @@
#include "base/strings/string16.h"
-#if defined(WCHAR_T_IS_UTF16)
+#if defined(WCHAR_T_IS_UTF16) && !defined(_AIX)
#error This file should not be used on 2-byte wchar_t systems
// If this winds up being needed on 2-byte wchar_t systems, either the
diff --git a/src/base/strings/string_piece.h b/src/base/strings/string_piece.h
index 340a341..6f45f71 100644
--- a/src/base/strings/string_piece.h
+++ b/src/base/strings/string_piece.h
@@ -29,16 +29,13 @@
#include "base/logging.h"
#include "base/strings/string16.h"
+#include "base/strings/string_piece_forward.h"
#define BASE_EXPORT
namespace url {
namespace base {
-template <typename STRING_TYPE> class BasicStringPiece;
-typedef BasicStringPiece<std::string> StringPiece;
-typedef BasicStringPiece<string16> StringPiece16;
-
// internal --------------------------------------------------------------------
// Many of the StringPiece functions use different implementations for the
diff --git a/src/base/strings/string_piece_forward.h b/src/base/strings/string_piece_forward.h
new file mode 100644
index 0000000..8a0ebc9
--- /dev/null
+++ b/src/base/strings/string_piece_forward.h
@@ -0,0 +1,25 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Forward declaration of StringPiece types from base/strings/string_piece.h
+
+#ifndef BASE_STRINGS_STRING_PIECE_FORWARD_H_
+#define BASE_STRINGS_STRING_PIECE_FORWARD_H_
+
+#include <string>
+
+#include "base/strings/string16.h"
+
+namespace url {
+namespace base {
+
+template <typename STRING_TYPE>
+class BasicStringPiece;
+typedef BasicStringPiece<std::string> StringPiece;
+typedef BasicStringPiece<string16> StringPiece16;
+
+} // namespace base
+} // namespace url
+
+#endif // BASE_STRINGS_STRING_PIECE_FORWARD_H_
diff --git a/src/build/build_config.h b/src/build/build_config.h
index b84a9d3..1f38fcc 100644
--- a/src/build/build_config.h
+++ b/src/build/build_config.h
@@ -49,6 +49,8 @@
#endif
#elif defined(_WIN32)
#define OS_WIN 1
+#elif defined(__Fuchsia__)
+#define OS_FUCHSIA 1
#elif defined(__FreeBSD__)
#define OS_FREEBSD 1
#elif defined(__NetBSD__)
@@ -59,6 +61,8 @@
#define OS_SOLARIS 1
#elif defined(__QNXNTO__)
#define OS_QNX 1
+#elif defined(_AIX)
+#define OS_AIX 1
#else
#error Please add support for your platform in build/build_config.h
#endif
@@ -75,10 +79,10 @@
// For access to standard POSIXish features, use OS_POSIX instead of a
// more specific macro.
-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_FREEBSD) || \
- defined(OS_NETBSD) || defined(OS_OPENBSD) || defined(OS_SOLARIS) || \
- defined(OS_ANDROID) || defined(OS_OPENBSD) || defined(OS_SOLARIS) || \
- defined(OS_ANDROID) || defined(OS_NACL) || defined(OS_QNX)
+#if defined(OS_AIX) || defined(OS_ANDROID) || defined(OS_FREEBSD) || \
+ defined(OS_FUCHSIA) || defined(OS_LINUX) || defined(OS_MACOSX) || \
+ defined(OS_NACL) || defined(OS_NETBSD) || defined(OS_OPENBSD) || \
+ defined(OS_QNX) || defined(OS_SOLARIS)
#define OS_POSIX 1
#endif
@@ -121,21 +125,16 @@
#define ARCH_CPU_S390 1
#define ARCH_CPU_31_BITS 1
#define ARCH_CPU_BIG_ENDIAN 1
-#elif defined(__PPC64__) && defined(__BIG_ENDIAN__)
+#elif (defined(__PPC64__) || defined(__PPC__)) && defined(__BIG_ENDIAN__)
#define ARCH_CPU_PPC64_FAMILY 1
#define ARCH_CPU_PPC64 1
#define ARCH_CPU_64_BITS 1
#define ARCH_CPU_BIG_ENDIAN 1
-#elif defined(__PPC64__) && defined(__LITTLE_ENDIAN__)
+#elif defined(__PPC64__)
#define ARCH_CPU_PPC64_FAMILY 1
#define ARCH_CPU_PPC64 1
#define ARCH_CPU_64_BITS 1
#define ARCH_CPU_LITTLE_ENDIAN 1
-#elif defined(__PPC__)
-#define ARCH_CPU_PPC_FAMILY 1
-#define ARCH_CPU_PPC 1
-#define ARCH_CPU_32_BITS 1
-#define ARCH_CPU_BIG_ENDIAN 1
#elif defined(__ARMEL__)
#define ARCH_CPU_ARM_FAMILY 1
#define ARCH_CPU_ARMEL 1
@@ -180,12 +179,10 @@
// Type detection for wchar_t.
#if defined(OS_WIN)
#define WCHAR_T_IS_UTF16
-#elif defined(OS_POSIX) && defined(COMPILER_GCC) && \
- defined(__WCHAR_MAX__) && \
+#elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \
(__WCHAR_MAX__ == 0x7fffffff || __WCHAR_MAX__ == 0xffffffff)
#define WCHAR_T_IS_UTF32
-#elif defined(OS_POSIX) && defined(COMPILER_GCC) && \
- defined(__WCHAR_MAX__) && \
+#elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \
(__WCHAR_MAX__ == 0x7fff || __WCHAR_MAX__ == 0xffff)
// On Posix, we'll detect short wchar_t, but projects aren't guaranteed to
// compile in this mode (in particular, Chrome doesn't). This is intended for
diff --git a/src/net/base/registry_controlled_domains/effective_tld_names.dat b/src/net/base/registry_controlled_domains/effective_tld_names.dat
index 7598355..1157a7f 100644
--- a/src/net/base/registry_controlled_domains/effective_tld_names.dat
+++ b/src/net/base/registry_controlled_domains/effective_tld_names.dat
@@ -171,7 +171,7 @@
// aq : https://en.wikipedia.org/wiki/.aq
aq
-// ar : https://nic.ar/normativa-vigente.xhtml
+// ar : https://nic.ar/nic-argentina/normativa-vigente
ar
com.ar
edu.ar
@@ -179,6 +179,7 @@
gov.ar
int.ar
mil.ar
+musica.ar
net.ar
org.ar
tur.ar
@@ -406,6 +407,7 @@
art.br
ato.br
b.br
+belem.br
bio.br
blog.br
bmd.br
@@ -414,6 +416,8 @@
cnt.br
com.br
coop.br
+cri.br
+def.br
ecn.br
eco.br
edu.br
@@ -424,6 +428,7 @@
eti.br
far.br
flog.br
+floripa.br
fm.br
fnd.br
fot.br
@@ -431,9 +436,38 @@
g12.br
ggf.br
gov.br
+// gov.br 26 states + df https://en.wikipedia.org/wiki/States_of_Brazil
+ac.gov.br
+al.gov.br
+am.gov.br
+ap.gov.br
+ba.gov.br
+ce.gov.br
+df.gov.br
+es.gov.br
+go.gov.br
+ma.gov.br
+mg.gov.br
+ms.gov.br
+mt.gov.br
+pa.gov.br
+pb.gov.br
+pe.gov.br
+pi.gov.br
+pr.gov.br
+rj.gov.br
+rn.gov.br
+ro.gov.br
+rr.gov.br
+rs.gov.br
+sc.gov.br
+se.gov.br
+sp.gov.br
+to.gov.br
imb.br
ind.br
inf.br
+jampa.br
jor.br
jus.br
leg.br
@@ -449,6 +483,7 @@
ntr.br
odo.br
org.br
+poa.br
ppg.br
pro.br
psc.br
@@ -456,6 +491,7 @@
qsl.br
radio.br
rec.br
+recife.br
slg.br
srv.br
taxi.br
@@ -465,6 +501,7 @@
tur.br
tv.br
vet.br
+vix.br
vlog.br
wiki.br
zlg.br
@@ -4406,6 +4443,7 @@
// nc : http://www.cctld.nc/
nc
asso.nc
+nom.nc
// ne : https://en.wikipedia.org/wiki/.ne
ne
@@ -6555,6 +6593,9 @@
// xn--54b7fta0cc ("Bangla", Bangla) : BD
বাংলা
+// xn--90ae ("bg", Bulgarian) : BG
+бг
+
// xn--90ais ("bel", Belarusian/Russian Cyrillic) : BY
// Operated by .by registry
бел
@@ -6590,6 +6631,34 @@
// https://www2.hkirc.hk/register/rules.jsp
香港
+// xn--2scrj9c ("Bharat", Kannada) : IN
+// India
+ಭಾರತ
+
+// xn--3hcrj9c ("Bharat", Oriya) : IN
+// India
+ଭାରତ
+
+// xn--45br5cyl ("Bharatam", Assamese) : IN
+// India
+ভাৰত
+
+// xn--h2breg3eve ("Bharatam", Sanskrit) : IN
+// India
+भारतम्
+
+// xn--h2brj9c8c ("Bharot", Santali) : IN
+// India
+भारोत
+
+// xn--mgbgu82a ("Bharat", Sindhi) : IN
+// India
+ڀارت
+
+// xn--rvc1e0am3e ("Bharatam", Malayalam) : IN
+// India
+ഭാരതം
+
// xn--h2brj9c ("Bharat", Devanagari) : IN
// India
भारत
@@ -6731,6 +6800,12 @@
// xn--o3cw4h ("Thai", Thai) : TH
// http://www.thnic.co.th
ไทย
+ศึกษา.ไทย
+ธุรกิจ.ไทย
+รัฐบาล.ไทย
+ทหาร.ไทย
+เน็ต.ไทย
+องค์กร.ไทย
// xn--pgbs0dh ("Tunisia", Arabic) : TN
// http://nic.tn
@@ -9039,9 +9114,6 @@
// organic : 2014-03-27 Afilias Limited
organic
-// orientexpress : 2015-02-05
-orientexpress
-
// origins : 2015-10-01 The Estée Lauder Companies Inc.
origins
@@ -10478,6 +10550,12 @@
// ===BEGIN PRIVATE DOMAINS===
// (Note: these are in alphabetical order by company name)
+// 1GB LLC : https://www.1gb.ua/
+// Submitted by 1GB LLC <noc@1gb.com.ua>
+cc.ua
+inf.ua
+ltd.ua
+
// Agnat sp. z o.o. : https://domena.pl
// Submitted by Przemyslaw Plewa <it-admin@domena.pl>
beep.pl
@@ -10495,7 +10573,7 @@
// Submitted by Donavan Miller <donavanm@amazon.com>
cloudfront.net
-// Amazon Elastic Compute Cloud: https://aws.amazon.com/ec2/
+// Amazon Elastic Compute Cloud : https://aws.amazon.com/ec2/
// Submitted by Luke Wells <psl-maintainers@amazon.com>
*.compute.amazonaws.com
*.compute-1.amazonaws.com
@@ -10610,15 +10688,28 @@
// Submitted by Nathan O'Sullivan <nathan@mammoth.com.au>
bnr.la
+// Boomla : https://boomla.com
+// Submitted by Tibor Halter <thalter@boomla.com>
+boomla.net
+
// Boxfuse : https://boxfuse.com
// Submitted by Axel Fontaine <axel@boxfuse.com>
boxfuse.io
+// bplaced : https://www.bplaced.net/
+// Submitted by Miroslav Bozic <security@bplaced.net>
+square7.ch
+bplaced.com
+bplaced.de
+square7.de
+bplaced.net
+square7.net
+
// BrowserSafetyMark
// Submitted by Dave Tharp <browsersafetymark.io@quicinc.com>
browsersafetymark.io
-// callidomus: https://www.callidomus.com/
+// callidomus : https://www.callidomus.com/
// Submitted by Marcus Popp <admin@callidomus.com>
mycd.eu
@@ -10692,6 +10783,14 @@
// Submitted by Khash Sajadi <khash@cloud66.com>
c66.me
+// CloudAccess.net : https://www.cloudaccess.net/
+// Submitted by Pawel Panek <noc@cloudaccess.net>
+jdevcloud.com
+wpdevcloud.com
+cloudaccess.host
+freesite.host
+cloudaccess.net
+
// cloudControl : https://www.cloudcontrol.com/
// Submitted by Tobias Wilken <tw@cloudcontrol.com>
cloudcontrolled.com
@@ -10730,12 +10829,7 @@
co.nl
co.no
-// Commerce Guys, SAS
-// Submitted by Damien Tournoud <damien@commerceguys.com>
-// CHROMIUM - Disabled as per https://code.google.com/p/chromium/issues/detail?id=459802
-// *.platform.sh
-
-// COSIMO GmbH http://www.cosimo.de
+// COSIMO GmbH : http://www.cosimo.de
// Submitted by Rene Marticke <rmarticke@cosimo.de>
dyn.cosidns.de
dynamisches-dns.de
@@ -10785,6 +10879,10 @@
// Submitted by Norbert Auler <mail@dnshome.de>
dnshome.de
+// DrayTek Corp. : https://www.draytek.com/
+// Submitted by Paul Fang <mis@draytek.com>
+drayddns.com
+
// DreamHost : http://www.dreamhost.com/
// Submitted by Andrew Farmer <andrew.farmer@dreamhost.com>
dreamhosters.com
@@ -11100,14 +11198,43 @@
myhome-server.de
ddnss.org
+// Definima : http://www.definima.com/
+// Submitted by Maxence Bitterli <maxence@definima.com>
+definima.net
+definima.io
+
+// Dynu.com : https://www.dynu.com/
+// Submitted by Sue Ye <sue@dynu.com>
+ddnsfree.com
+ddnsgeek.com
+giize.com
+gleeze.com
+kozow.com
+loseyourip.com
+ooguy.com
+theworkpc.com
+casacam.net
+dynu.net
+accesscam.org
+camdvr.org
+freeddns.org
+mywire.org
+webredirect.org
+myddns.rocks
+blogsite.xyz
+
// dynv6 : https://dynv6.com
-// Submitted by Dominik Menke <dom@digineo.de> 2016-01-18
+// Submitted by Dominik Menke <dom@digineo.de>
dynv6.net
// E4YOU spol. s.r.o. : https://e4you.cz/
// Submitted by Vladimir Dudr <info@e4you.cz>
e4.cz
+// Enalean SAS: https://www.enalean.com
+// Submitted by Thomas Cottier <thomas.cottier@enalean.com>
+mytuleap.com
+
// Enonic : http://enonic.com/
// Submitted by Erik Kaareng-Sunde <esu@enonic.com>
enonic.io
@@ -11177,9 +11304,19 @@
eu-1.evennode.com
eu-2.evennode.com
eu-3.evennode.com
+eu-4.evennode.com
us-1.evennode.com
us-2.evennode.com
us-3.evennode.com
+us-4.evennode.com
+
+// eDirect Corp. : https://hosting.url.com.tw/
+// Submitted by C.S. chang <cschang@corp.url.com.tw>
+twmail.cc
+twmail.net
+twmail.org
+mymailer.com.tw
+url.tw
// Facebook, Inc.
// Submitted by Peter Ruibal <public-suffix@fb.com>
@@ -11283,6 +11420,10 @@
fedorapeople.org
cloud.fedoraproject.org
+// Filegear Inc. : https://www.filegear.com
+// Submitted by Jason Zhu <jason@owtware.com>
+filegear.me
+
// Firebase, Inc.
// Submitted by Chris Raynor <chris@firebase.com>
firebaseapp.com
@@ -11290,6 +11431,7 @@
// Flynn : https://flynn.io
// Submitted by Jonathan Rudenberg <jonathan@flynn.io>
flynnhub.com
+flynnhosting.net
// Freebox : http://www.freebox.fr
// Submitted by Romain Fliedel <rfliedel@freebox.fr>
@@ -11320,11 +11462,6 @@
// Submitted by Patrick Toomey <security@github.com>
github.io
githubusercontent.com
-githubcloud.com
-*.api.githubcloud.com
-*.ext.githubcloud.com
-gist.githubcloud.com
-*.githubcloudusercontent.com
// GitLab, Inc.
// Submitted by Alex Hanselka <alex@gitlab.com>
@@ -11422,6 +11559,7 @@
blogspot.ug
blogspot.vn
cloudfunctions.net
+cloud.goog
codespot.com
googleapis.com
googlecode.com
@@ -11458,6 +11596,10 @@
biz.at
info.at
+// info.cx : http://info.cx
+// Submitted by Jacob Slater <whois@igloo.to>
+info.cx
+
// Interlegis : http://www.interlegis.leg.br
// Submitted by Gabriel Ferreira <registrobr@interlegis.leg.br>
ac.leg.br
@@ -11513,10 +11655,40 @@
co.krd
edu.krd
+// LCube - Professional hosting e.K. : https://www.lcube-webhosting.de
+// Submitted by Lars Laehn <info@lcube.de>
+git-repos.de
+lcube-server.de
+svn-repos.de
+
+// LiquidNet Ltd : http://www.liquidnetlimited.com/
+// Submitted by Victor Velchev <admin@liquidnetlimited.com>
+we.bs
+
+// Lukanet Ltd : https://lukanet.com
+// Submitted by Anton Avramov <register@lukanet.com>
+barsy.bg
+barsyonline.com
+barsy.de
+barsy.eu
+barsy.in
+barsy.net
+barsy.online
+barsy.support
+
// Magento Commerce
// Submitted by Damien Tournoud <dtournoud@magento.cloud>
*.magentosite.cloud
+// Mail.Ru Group : https://hb.cldmail.ru
+// Submitted by Ilya Zaretskiy <zaretskiy@corp.mail.ru>
+hb.cldmail.ru
+
+// MetaCentrum, CESNET z.s.p.o. : https://www.metacentrum.cz/en/
+// Submitted by Zdeněk Šustr <zdenek.sustr@cesnet.cz>
+cloud.metacentrum.cz
+custom.metacentrum.cz
+
// Meteor Development Group : https://www.meteor.com/hosting
// Submitted by Pierre Carrier <pierre@meteor.com>
meteorapp.com
@@ -11535,6 +11707,11 @@
// Submitted by glob <glob@mozilla.com>
bmoattachments.org
+// Netlify : https://www.netlify.com
+// Submitted by Jessica Parsons <jessica@netlify.com>
+bitballoon.com
+netlify.com
+
// Neustar Inc.
// Submitted by Trung Tran <Trung.Tran@neustar.biz>
4u.com
@@ -11640,10 +11817,59 @@
webhop.me
zapto.org
+// NodeArt : https://nodeart.io
+// Submitted by Konstantin Nosov <Nosov@nodeart.io>
+stage.nodeart.io
+
+// Nodum B.V. : https://nodum.io/
+// Submitted by Wietse Wind <hello+publicsuffixlist@nodum.io>
+nodum.co
+nodum.io
+
// NYC.mn : http://www.information.nyc.mn
// Submitted by Matthew Brown <mattbrown@nyc.mn>
nyc.mn
+// NymNom : https://nymnom.com/
+// Submitted by Dave McCormack <dave.mccormack@nymnom.com>
+nom.ae
+nom.ai
+nom.al
+nym.by
+nym.bz
+nom.cl
+nom.gd
+nom.gl
+nym.gr
+nom.gt
+nom.hn
+nom.im
+nym.kz
+nym.la
+nom.li
+nym.li
+nym.lt
+nym.lu
+nym.me
+nom.mk
+nym.mx
+nom.nu
+nym.nz
+nym.pe
+nym.pt
+nom.pw
+nom.qa
+nom.rs
+nom.si
+nym.sk
+nym.su
+nym.sx
+nym.tw
+nom.ug
+nom.uy
+nom.vc
+nom.vg
+
// Octopodal Solutions, LLC. : https://ulterius.io/
// Submitted by Andrew Sampson <andrew@ulterius.io>
cya.gg
@@ -11701,6 +11927,12 @@
// Submitted by Frédéric VANNIÈRE <f.vanniere@planet-work.com>
on-web.fr
+// Platform.sh : https://platform.sh
+// Submitted by Nikola Kotur <nikola@platform.sh>
+// CHROMIUM - Disabled as per https://code.google.com/p/chromium/issues/detail?id=459802
+// *.platform.sh
+*.platformsh.site
+
// prgmr.com : https://prgmr.com/
// Submitted by Sarah Newman <owner@prgmr.com>
xen.prgmr.com
@@ -11727,6 +11959,15 @@
alpha-myqnapcloud.com
myqnapcloud.com
+// Quip : https://quip.com
+// Submitted by Patrick Linehan <plinehan@quip.com>
+*.quipelements.com
+
+// Qutheory LLC : http://qutheory.io
+// Submitted by Jonas Schwartz <jonas@qutheory.io>
+vapor.cloud
+vaporcloud.io
+
// Rackmaze LLC : https://www.rackmaze.com
// Submitted by Kirill Pertsev <kika@rackmaze.com>
rackmaze.com
@@ -11768,6 +12009,10 @@
myfirewall.org
spdns.org
+// SensioLabs, SAS : https://sensiolabs.com/
+// Submitted by Fabien Potencier <fabien.potencier@sensiolabs.com>
+*.sensiosite.cloud
+
// Service Online LLC : http://drs.ua/
// Submitted by Serhii Bulakh <support@drs.ua>
biz.ua
@@ -11819,6 +12064,10 @@
// Submitted by Philip Hutchins <hostmaster@storj.io>
storj.farm
+// Sub 6 Limited: http://www.sub6.com
+// Submitted by Dan Miller <dm@sub6.com>
+temp-dns.com
+
// Synology, Inc. : https://www.synology.com/
// Submitted by Rony Weng <ronyweng@synology.com>
diskstation.me
@@ -11847,11 +12096,40 @@
med.pl
sopot.pl
+// Thingdust AG : https://thingdust.com/
+// Submitted by Adrian Imboden <adi@thingdust.com>
+cust.dev.thingdust.io
+cust.disrec.thingdust.io
+cust.prod.thingdust.io
+cust.testing.thingdust.io
+
// TownNews.com : http://www.townnews.com
// Submitted by Dustin Ward <dward@townnews.com>
bloxcms.com
townnews-staging.com
+// TrafficPlex GmbH : https://www.trafficplex.de/
+// Submitted by Phillipp Röll <phillipp.roell@trafficplex.de>
+12hp.at
+2ix.at
+4lima.at
+lima-city.at
+12hp.ch
+2ix.ch
+4lima.ch
+lima-city.ch
+trafficplex.cloud
+de.cool
+12hp.de
+2ix.de
+4lima.de
+lima-city.de
+1337.pictures
+clan.rip
+lima-city.rocks
+webspace.rocks
+lima.zone
+
// TransIP : htts://www.transip.nl
// Submitted by Rory Breuk <rbreuk@transip.nl>
*.transurl.be
@@ -11897,6 +12175,11 @@
// Submitted by Simon Kissel <hostmaster@viprinet.com>
router.management
+// WeDeploy by Liferay, Inc. : https://www.wedeploy.com
+// Submitted by Henrique Vicente <security@wedeploy.com>
+wedeploy.io
+wedeploy.me
+
// Western Digital Technologies, Inc : https://www.wdc.com
// Submitted by Jung Jin <jungseok.jin@wdc.com>
remotewd.com
@@ -11905,8 +12188,10 @@
// Submitted by Yuvi Panda <yuvipanda@wikimedia.org>
wmflabs.org
-// XS4ALL Internet bv: https://www.xs4all.nl/
+// XS4ALL Internet bv : https://www.xs4all.nl/
// Submitted by Daniel Mostertman <unixbeheer+publicsuffix@xs4all.net>
+cistron.nl
+demon.nl
xs4all.space
// Yola : https://www.yola.com/
@@ -11932,10 +12217,4 @@
// Submitted by Olli Vanhoja <olli@zeit.co>
now.sh
-// 1GB LLC : https://www.1gb.ua/
-// Submitted by 1GB LLC <noc@1gb.com.ua>
-cc.ua
-inf.ua
-ltd.ua
-
// ===END PRIVATE DOMAINS===
diff --git a/src/net/base/registry_controlled_domains/effective_tld_names.gperf b/src/net/base/registry_controlled_domains/effective_tld_names.gperf
index ba49a41..549579b 100644
--- a/src/net/base/registry_controlled_domains/effective_tld_names.gperf
+++ b/src/net/base/registry_controlled_domains/effective_tld_names.gperf
@@ -14,12 +14,22 @@
0.bg, 0
0emm.com, 6
1.bg, 0
+12hp.at, 4
+12hp.ch, 4
+12hp.de, 4
+1337.pictures, 4
1kapp.com, 4
2.bg, 0
2000.hu, 0
+2ix.at, 4
+2ix.ch, 4
+2ix.de, 4
3.bg, 0
3utilities.com, 4
4.bg, 0
+4lima.at, 4
+4lima.ch, 4
+4lima.de, 4
4u.com, 4
5.bg, 0
6.bg, 0
@@ -62,6 +72,7 @@
ac.cr, 0
ac.cy, 0
ac.gn, 0
+ac.gov.br, 0
ac.id, 0
ac.il, 0
ac.im, 0
@@ -98,6 +109,7 @@
academy, 0
academy.museum, 0
accenture, 0
+accesscam.org, 4
accident-investigation.aero, 0
accident-prevention.aero, 0
accountant, 0
@@ -205,6 +217,7 @@
akune.kagoshima.jp, 0
al, 0
al.eu.org, 4
+al.gov.br, 0
al.it, 0
al.leg.br, 4
al.no, 0
@@ -236,6 +249,7 @@
alwaysdata.net, 6
am, 0
am.br, 0
+am.gov.br, 0
am.leg.br, 4
ama.aichi.jp, 0
ama.shimane.jp, 0
@@ -297,11 +311,11 @@
aosta.it, 0
aostavalley.it, 0
aoste.it, 0
+ap.gov.br, 0
ap.gov.pl, 0
ap.it, 0
ap.leg.br, 4
apartments, 0
-api.githubcloud.com, 6
app, 0
appchizi.com, 4
apple, 0
@@ -488,6 +502,7 @@
b.se, 0
b.ssl.fastly.net, 4
ba, 0
+ba.gov.br, 0
ba.it, 0
ba.leg.br, 4
babia-gora.pl, 0
@@ -533,6 +548,14 @@
barreau.bj, 0
barrel-of-knowledge.info, 4
barrell-of-knowledge.info, 4
+barsy.bg, 4
+barsy.de, 4
+barsy.eu, 4
+barsy.in, 4
+barsy.net, 4
+barsy.online, 4
+barsy.support, 4
+barsyonline.com, 4
barum.no, 0
bas.it, 0
baseball, 0
@@ -572,6 +595,7 @@
beiarn.no, 0
bel.tr, 0
belau.pw, 0
+belem.br, 0
bellevue.museum, 0
belluno.it, 0
benevento.it, 0
@@ -627,6 +651,7 @@
birdart.museum, 0
birkenes.no, 0
birthplace.museum, 0
+bitballoon.com, 4
biz, 0
biz.at, 4
biz.az, 0
@@ -666,6 +691,7 @@
blogdns.net, 4
blogdns.org, 4
blogsite.org, 4
+blogsite.xyz, 4
blogspot.ae, 4
blogspot.al, 4
blogspot.am, 4
@@ -775,6 +801,7 @@
boo, 0
book, 0
booking, 0
+boomla.net, 4
boots, 0
bosch, 0
bostik, 0
@@ -791,6 +818,9 @@
box, 0
boxfuse.io, 4
bozen.it, 0
+bplaced.com, 4
+bplaced.de, 4
+bplaced.net, 4
br, 0
br.com, 4
br.it, 0
@@ -885,6 +915,7 @@
cam, 0
cam.it, 0
cambridge.museum, 0
+camdvr.org, 4
camera, 0
camp, 0
campania.it, 0
@@ -915,6 +946,7 @@
cartier, 0
cartoonart.museum, 0
casa, 0
+casacam.net, 4
casadelamoneda.museum, 0
case, 0
caseih, 0
@@ -998,6 +1030,7 @@
cd, 0
cd.eu.org, 4
cdn77-ssl.net, 4
+ce.gov.br, 0
ce.it, 0
ce.leg.br, 4
ceb, 0
@@ -1097,6 +1130,7 @@
circus.museum, 0
cisco, 0
ciscofreak.com, 4
+cistron.nl, 4
citadel, 0
citi, 0
citic, 0
@@ -1119,6 +1153,7 @@
cl, 0
cl.it, 0
claims, 0
+clan.rip, 4
cleaning, 0
click, 0
clinic, 0
@@ -1128,6 +1163,10 @@
clothing, 0
cloud, 0
cloud.fedoraproject.org, 4
+cloud.goog, 4
+cloud.metacentrum.cz, 4
+cloudaccess.host, 4
+cloudaccess.net, 4
cloudapp.net, 4
cloudcontrolapp.com, 4
cloudcontrolled.com, 4
@@ -1441,6 +1480,7 @@
creditunion, 0
cremona.it, 0
crew.aero, 0
+cri.br, 0
cri.nz, 0
cricket, 0
crimea.ua, 0
@@ -1461,6 +1501,11 @@
culture.museum, 0
cuneo.it, 0
cupcake.is, 4
+cust.dev.thingdust.io, 4
+cust.disrec.thingdust.io, 4
+cust.prod.thingdust.io, 4
+cust.testing.thingdust.io, 4
+custom.metacentrum.cz, 4
customer.enonic.io, 4
cv, 0
cv.ua, 0
@@ -1513,6 +1558,8 @@
dd-dns.de, 4
ddns.me, 4
ddns.net, 4
+ddnsfree.com, 4
+ddnsgeek.com, 4
ddnsking.com, 4
ddnss.de, 4
ddnss.org, 4
@@ -1520,6 +1567,7 @@
dds, 0
de, 0
de.com, 4
+de.cool, 4
de.eu.org, 4
de.us, 0
deal, 0
@@ -1528,7 +1576,10 @@
deatnu.no, 0
decorativearts.museum, 0
dedyn.io, 4
+def.br, 0
defense.tn, 0
+definima.io, 4
+definima.net, 4
degree, 0
delaware.museum, 0
delivery, 0
@@ -1539,6 +1590,7 @@
deloitte, 0
delta, 0
democrat, 0
+demon.nl, 4
denmark.museum, 0
dental, 0
dentist, 0
@@ -1553,6 +1605,7 @@
dev, 0
dev-myqnapcloud.com, 4
dev.static.land, 4
+df.gov.br, 0
df.leg.br, 4
dgca.aero, 0
dhl, 0
@@ -1624,6 +1677,7 @@
drammen.no, 0
drangedal.no, 0
dray-dns.de, 4
+drayddns.com, 4
draydns.de, 4
dreamhosters.com, 4
drive, 0
@@ -1684,6 +1738,7 @@
dyndns.ws, 4
dyndns1.de, 4
dynns.com, 4
+dynu.net, 4
dynv6.net, 4
dynvpn.de, 4
dyroy.no, 0
@@ -1912,6 +1967,7 @@
erotika.hu, 0
es, 0
es.eu.org, 4
+es.gov.br, 0
es.kr, 0
es.leg.br, 4
esan.hokkaido.jp, 0
@@ -1939,6 +1995,7 @@
eu-1.evennode.com, 4
eu-2.evennode.com, 4
eu-3.evennode.com, 4
+eu-4.evennode.com, 4
eu.com, 4
eu.int, 0
eu.meteorapp.com, 4
@@ -1962,7 +2019,6 @@
exposed, 0
express, 0
express.aero, 0
-ext.githubcloud.com, 6
extraspace, 0
f.bg, 0
f.se, 0
@@ -2026,6 +2082,7 @@
field.museum, 0
figueres.museum, 0
filatelia.museum, 0
+filegear.me, 4
film, 0
film.hu, 0
film.museum, 0
@@ -2078,10 +2135,12 @@
flora.no, 0
florence.it, 0
florida.museum, 0
+floripa.br, 0
florist, 0
floro.no, 0
flowers, 0
fly, 0
+flynnhosting.net, 4
flynnhub.com, 4
fm, 0
fm.br, 0
@@ -2133,7 +2192,9 @@
freebox-os.fr, 4
freeboxos.com, 4
freeboxos.fr, 4
+freeddns.org, 4
freemasonry.museum, 0
+freesite.host, 4
freetls.fastly.net, 4
frei.no, 0
freiburg.museum, 0
@@ -2360,15 +2421,14 @@
gifts, 0
gifu.gifu.jp, 0
gifu.jp, 0
+giize.com, 4
gildeskal.no, 0
ginan.gifu.jp, 0
ginowan.okinawa.jp, 0
ginoza.okinawa.jp, 0
giske.no, 0
-gist.githubcloud.com, 4
+git-repos.de, 4
github.io, 4
-githubcloud.com, 4
-githubcloudusercontent.com, 6
githubusercontent.com, 4
gitlab.io, 4
gives, 0
@@ -2384,6 +2444,7 @@
glass, 0
glass.museum, 0
gle, 0
+gleeze.com, 4
gliding.aero, 0
gliwice.pl, 4
global, 0
@@ -2403,6 +2464,7 @@
go.ci, 0
go.cr, 0
go.dyndns.org, 4
+go.gov.br, 0
go.id, 0
go.it, 0
go.jp, 0
@@ -2761,6 +2823,7 @@
hayakawa.yamanashi.jp, 0
hayashima.okayama.jp, 0
hazu.aichi.jp, 0
+hb.cldmail.ru, 4
hb.cn, 0
hbo, 0
hdfc, 0
@@ -3115,6 +3178,7 @@
info.az, 0
info.bb, 0
info.co, 0
+info.cx, 4
info.ec, 0
info.et, 0
info.ht, 0
@@ -3348,11 +3412,13 @@
jaguar, 0
jambyl.su, 4
jamison.museum, 0
+jampa.br, 0
jan-mayen.no, 0
java, 0
jaworzno.pl, 0
jcb, 0
jcp, 0
+jdevcloud.com, 4
je, 0
jeep, 0
jefferson.museum, 0
@@ -3784,6 +3850,7 @@
koza.wakayama.jp, 0
kozagawa.wakayama.jp, 0
kozaki.chiba.jp, 0
+kozow.com, 4
kp, 0
kpmg, 0
kpn, 0
@@ -3935,6 +4002,7 @@
lb, 0
lc, 0
lc.it, 0
+lcube-server.de, 4
lds, 0
le.it, 0
leangaviika.no, 0
@@ -4042,6 +4110,11 @@
lillehammer.no, 0
lillesand.no, 0
lilly, 0
+lima-city.at, 4
+lima-city.ch, 4
+lima-city.de, 4
+lima-city.rocks, 4
+lima.zone, 4
limanowa.pl, 0
limited, 0
limo, 0
@@ -4087,6 +4160,7 @@
loppa.no, 0
lorenskog.no, 0
losangeles.museum, 0
+loseyourip.com, 4
loten.no, 0
lotte, 0
lotto, 0
@@ -4141,6 +4215,7 @@
m.bg, 0
m.se, 0
ma, 0
+ma.gov.br, 0
ma.leg.br, 4
ma.us, 0
macerata.it, 0
@@ -4300,6 +4375,7 @@
metlife, 0
mex.com, 4
mg, 0
+mg.gov.br, 0
mg.leg.br, 4
mh, 0
mi.it, 0
@@ -4581,6 +4657,7 @@
mr.no, 0
mragowo.pl, 0
ms, 0
+ms.gov.br, 0
ms.it, 0
ms.kr, 0
ms.leg.br, 4
@@ -4590,6 +4667,7 @@
msk.su, 4
mt, 0
mt.eu.org, 4
+mt.gov.br, 0
mt.it, 0
mt.leg.br, 4
mt.us, 0
@@ -4628,6 +4706,7 @@
museumcenter.museum, 0
museumvereniging.museum, 0
music.museum, 0
+musica.ar, 0
mutsu.aomori.jp, 0
mutsuzawa.chiba.jp, 0
mutual, 0
@@ -4647,6 +4726,7 @@
myactivedirectory.com, 4
myasustor.com, 4
mycd.eu, 4
+myddns.rocks, 4
mydissent.net, 4
mydrobo.com, 4
myds.me, 4
@@ -4658,6 +4738,7 @@
myfusion.cloud, 4
myhome-server.de, 4
mykolaiv.ua, 0
+mymailer.com.tw, 4
mymediapc.net, 4
myoko.niigata.jp, 0
mypep.link, 4
@@ -4670,7 +4751,9 @@
mysecuritycamera.org, 4
myshopblocks.com, 4
mytis.ru, 4
+mytuleap.com, 4
myvnc.com, 4
+mywire.org, 4
mz, 0
n.bg, 0
n.se, 0
@@ -4963,6 +5046,7 @@
net.zm, 0
netbank, 0
netflix, 0
+netlify.com, 4
network, 0
neues.museum, 0
neustar, 0
@@ -5070,6 +5154,8 @@
noboribetsu.hokkaido.jp, 0
noda.chiba.jp, 0
noda.iwate.jp, 0
+nodum.co, 4
+nodum.io, 4
nogata.fukuoka.jp, 0
nogi.tochigi.jp, 0
noheji.aomori.jp, 0
@@ -5077,20 +5163,41 @@
noip.us, 4
nokia, 0
nom.ad, 0
+nom.ae, 4
nom.ag, 0
+nom.ai, 4
+nom.al, 4
nom.br, 2
+nom.cl, 4
nom.co, 0
nom.es, 0
nom.fr, 0
+nom.gd, 4
+nom.gl, 4
+nom.gt, 4
+nom.hn, 4
+nom.im, 4
nom.km, 0
+nom.li, 4
nom.mg, 0
+nom.mk, 4
+nom.nc, 0
nom.ni, 0
+nom.nu, 4
nom.pa, 0
nom.pe, 0
nom.pl, 0
+nom.pw, 4
+nom.qa, 4
nom.re, 0
nom.ro, 0
+nom.rs, 4
+nom.si, 4
nom.tm, 0
+nom.ug, 4
+nom.uy, 4
+nom.vc, 4
+nom.vg, 4
nom.za, 0
nome.pt, 0
nomi.ishikawa.jp, 0
@@ -5159,6 +5266,23 @@
nyc, 0
nyc.mn, 4
nyc.museum, 0
+nym.by, 4
+nym.bz, 4
+nym.gr, 4
+nym.kz, 4
+nym.la, 4
+nym.li, 4
+nym.lt, 4
+nym.lu, 4
+nym.me, 4
+nym.mx, 4
+nym.nz, 4
+nym.pe, 4
+nym.pt, 4
+nym.sk, 4
+nym.su, 4
+nym.sx, 4
+nym.tw, 4
nyny.museum, 0
nysa.pl, 0
nyuzen.toyama.jp, 0
@@ -5303,6 +5427,7 @@
ontario.museum, 0
onthewifi.com, 4
onyourside, 0
+ooguy.com, 4
ookuwa.nagano.jp, 0
ooo, 0
ooshika.nagano.jp, 0
@@ -5477,7 +5602,6 @@
org.zm, 0
org.zw, 0
organic, 0
-orientexpress, 0
origins, 0
oristano.it, 0
orkanger.no, 0
@@ -5556,6 +5680,7 @@
p.bg, 0
p.se, 0
pa, 0
+pa.gov.br, 0
pa.gov.pl, 0
pa.it, 0
pa.leg.br, 4
@@ -5596,6 +5721,7 @@
pavia.it, 0
pay, 0
pb.ao, 0
+pb.gov.br, 0
pb.leg.br, 4
pc.it, 0
pc.pl, 0
@@ -5603,6 +5729,7 @@
pd.it, 0
pe, 0
pe.ca, 0
+pe.gov.br, 0
pe.it, 0
pe.kr, 0
pe.leg.br, 4
@@ -5641,6 +5768,7 @@
photography.museum, 0
photos, 0
physio, 0
+pi.gov.br, 0
pi.it, 0
pi.leg.br, 4
piacenza.it, 0
@@ -5675,6 +5803,7 @@
planetarium.museum, 0
plantation.museum, 0
plants.museum, 0
+platformsh.site, 6
play, 0
playstation, 0
plaza.museum, 0
@@ -5691,6 +5820,7 @@
pnc, 0
po.gov.pl, 0
po.it, 0
+poa.br, 0
podhale.pl, 0
podlasie.pl, 0
podzone.net, 4
@@ -5730,6 +5860,7 @@
pp.ua, 4
ppg.br, 0
pr, 0
+pr.gov.br, 0
pr.it, 0
pr.leg.br, 4
pr.us, 0
@@ -5833,6 +5964,7 @@
quebec.museum, 0
quest, 0
quicksytes.com, 4
+quipelements.com, 6
qvc, 0
r.bg, 0
r.cdn77.net, 4
@@ -5881,6 +6013,7 @@
rec.ro, 0
rec.ve, 0
recht.pro, 0
+recife.br, 0
recipes, 0
recreation.aero, 0
red, 0
@@ -5951,10 +6084,12 @@
rissa.no, 0
ritto.shiga.jp, 0
rivne.ua, 0
+rj.gov.br, 0
rj.leg.br, 4
rl.no, 0
rm.it, 0
rmit, 0
+rn.gov.br, 0
rn.it, 0
rn.leg.br, 4
rnrt.tn, 0
@@ -5962,6 +6097,7 @@
rnu.tn, 0
ro, 0
ro.eu.org, 4
+ro.gov.br, 0
ro.im, 4
ro.it, 0
ro.leg.br, 4
@@ -5989,8 +6125,10 @@
rovno.ua, 0
royken.no, 0
royrvik.no, 0
+rr.gov.br, 0
rr.leg.br, 4
rs, 0
+rs.gov.br, 0
rs.leg.br, 4
rsc.cdn77.org, 4
rsvp, 0
@@ -6189,6 +6327,7 @@
sbs, 0
sc, 0
sc.cn, 0
+sc.gov.br, 0
sc.kr, 0
sc.leg.br, 4
sc.tz, 0
@@ -6246,6 +6385,7 @@
se, 0
se.com, 4
se.eu.org, 4
+se.gov.br, 0
se.leg.br, 4
se.net, 4
seaport.museum, 0
@@ -6285,6 +6425,7 @@
sendai.jp, 2
sener, 0
sennan.osaka.jp, 0
+sensiosite.cloud, 6
seoul.kr, 0
sera.hiroshima.jp, 0
seranishi.hiroshima.jp, 0
@@ -6565,6 +6706,7 @@
southwest.museum, 0
sowa.ibaraki.jp, 0
soy, 0
+sp.gov.br, 0
sp.it, 0
sp.leg.br, 4
space, 0
@@ -6584,6 +6726,9 @@
spy.museum, 0
spydeberg.no, 0
square.museum, 0
+square7.ch, 4
+square7.de, 4
+square7.net, 4
sr, 0
sr.gov.pl, 0
sr.it, 0
@@ -6597,6 +6742,7 @@
stackspace.space, 4
stada, 0
stadt.museum, 0
+stage.nodeart.io, 4
stalbans.museum, 0
stalowa-wola.pl, 0
stange.no, 0
@@ -6703,6 +6849,7 @@
sveio.no, 0
svelvik.no, 0
svizzera.museum, 0
+svn-repos.de, 4
swatch, 0
sweden.museum, 0
sweetpepper.org, 4
@@ -6861,6 +7008,7 @@
telekommunikation.museum, 0
television.museum, 0
temasek, 0
+temp-dns.com, 4
tempio-olbia.it, 0
tempioolbia.it, 0
tendo.yamagata.jp, 0
@@ -6887,6 +7035,7 @@
theater, 0
theater.museum, 0
theatre, 0
+theworkpc.com, 4
thruhere.net, 4
tiaa, 0
tickets, 0
@@ -6927,6 +7076,7 @@
tn.it, 0
tn.us, 0
to, 0
+to.gov.br, 0
to.it, 0
to.leg.br, 4
toba.mie.jp, 0
@@ -7042,6 +7192,7 @@
trading, 0
trading.aero, 0
traeumtgerade.de, 4
+trafficplex.cloud, 4
trainer.aero, 0
training, 0
trana.no, 0
@@ -7161,6 +7312,9 @@
tvs, 0
tw, 0
tw.cn, 0
+twmail.cc, 4
+twmail.net, 4
+twmail.org, 4
tx.us, 0
tychy.pl, 0
tydal.no, 0
@@ -7240,6 +7394,7 @@
urbinopesaro.it, 0
ureshino.mie.jp, 0
uri.arpa, 0
+url.tw, 4
urn.arpa, 0
uruma.okinawa.jp, 0
uryu.hokkaido.jp, 0
@@ -7247,6 +7402,7 @@
us-1.evennode.com, 4
us-2.evennode.com, 4
us-3.evennode.com, 4
+us-4.evennode.com, 4
us-east-1.amazonaws.com, 4
us.com, 4
us.eu.org, 4
@@ -7320,6 +7476,8 @@
vantaa.museum, 0
vanylven.no, 0
vao.it, 0
+vapor.cloud, 4
+vaporcloud.io, 4
vardo.no, 0
varese.it, 0
varggat.no, 0
@@ -7398,6 +7556,7 @@
viterbo.it, 0
viva, 0
vivo, 0
+vix.br, 0
vlaanderen, 0
vlaanderen.museum, 0
vladikavkaz.ru, 4
@@ -7469,6 +7628,7 @@
watches, 0
waw.pl, 0
wazuka.kyoto.jp, 0
+we.bs, 4
weather, 0
weatherchannel, 0
web.co, 0
@@ -7489,9 +7649,13 @@
webhop.me, 4
webhop.net, 4
webhop.org, 4
+webredirect.org, 4
website, 0
+webspace.rocks, 4
wed, 0
wedding, 0
+wedeploy.io, 4
+wedeploy.me, 4
wegrow.pl, 0
weibo, 0
weir, 0
@@ -7540,6 +7704,7 @@
world, 0
worse-than.tv, 4
wow, 0
+wpdevcloud.com, 4
writesthisblog.com, 4
wroc.pl, 4
wroclaw.pl, 0
@@ -7567,20 +7732,26 @@
xj.cn, 0
xn--0trq7p7nn.jp, 0
xn--11b4c3d, 0
+xn--12c1fe0br.xn--o3cw4h, 0
+xn--12cfi8ixb8l.xn--o3cw4h, 0
+xn--12co0c3b4eva.xn--o3cw4h, 0
xn--1ck2e1b, 0
xn--1ctwo.jp, 0
xn--1lqs03n.jp, 0
xn--1lqs71d.jp, 0
xn--1qqw23a, 0
xn--2m4a15e.jp, 0
+xn--2scrj9c, 0
xn--30rr7y, 0
xn--32vp30h.jp, 0
xn--3bst00m, 0
xn--3ds443g, 0
xn--3e0b707e, 0
+xn--3hcrj9c, 0
xn--3oq18vl8pn36a, 0
xn--3pxu8k, 0
xn--42c2d9a, 0
+xn--45br5cyl, 0
xn--45brj9c, 0
xn--45q11c, 0
xn--4gbrim, 0
@@ -7612,6 +7783,7 @@
xn--8pvr4u.jp, 0
xn--8y0a063a, 0
xn--90a3ac, 0
+xn--90ae, 0
xn--90ais, 0
xn--90azh.xn--90a3ac, 0
xn--9dbhblg6di.museum, 0
@@ -7707,7 +7879,10 @@
xn--gmqw5a.hk, 0
xn--h-2fa.no, 0
xn--h1aegh.museum, 0
+xn--h2breg3eve, 0
xn--h2brj9c, 0
+xn--h2brj9c8c, 0
+xn--h3cuzk1di.xn--o3cw4h, 0
xn--hbmer-xqa.no, 0
xn--hcesuolo-7ya35b.no, 0
xn--hery-ira.nordland.no, 0
@@ -7777,6 +7952,7 @@
xn--lt-liac.no, 0
xn--lten-gra.no, 0
xn--lury-ira.no, 0
+xn--m3ch0j3a.xn--o3cw4h, 0
xn--mely-ira.no, 0
xn--merker-kua.no, 0
xn--mgb2ddes, 0
@@ -7799,6 +7975,7 @@
xn--mgbca7dzdo, 0
xn--mgberp4a5d4a87g, 0
xn--mgberp4a5d4ar, 0
+xn--mgbgu82a, 0
xn--mgbi4ecexp, 0
xn--mgbpl2fh, 0
xn--mgbqly7c0a67fbc, 0
@@ -7843,6 +8020,7 @@
xn--o1ac.xn--90a3ac, 0
xn--o1ach.xn--90a3ac, 0
xn--o3cw4h, 0
+xn--o3cyx2a.xn--o3cw4h, 0
xn--od0alg.cn, 0
xn--od0alg.hk, 0
xn--od0aq3b.hk, 0
@@ -7883,6 +8061,7 @@
xn--rskog-uua.no, 0
xn--rst-0na.no, 0
xn--rsta-fra.no, 0
+xn--rvc1e0am3e, 0
xn--ryken-vua.no, 0
xn--ryrvik-bya.no, 0
xn--s-1fa.no, 0
diff --git a/src/url/gurl_unittest.cc b/src/url/gurl_unittest.cc
index a3b43d6..bf5a004 100644
--- a/src/url/gurl_unittest.cc
+++ b/src/url/gurl_unittest.cc
@@ -645,12 +645,26 @@
// Constructor.
GURL url_1(" \t ht\ntp://\twww.goo\rgle.com/as\ndf \n ");
EXPECT_EQ("http://www.google.com/asdf", url_1.spec());
- EXPECT_TRUE(url_1.parsed_for_possibly_invalid_spec().whitespace_removed);
+ EXPECT_FALSE(
+ url_1.parsed_for_possibly_invalid_spec().potentially_dangling_markup);
// Relative path resolver.
GURL url_2 = url_1.Resolve(" \n /fo\to\r ");
EXPECT_EQ("http://www.google.com/foo", url_2.spec());
- EXPECT_TRUE(url_2.parsed_for_possibly_invalid_spec().whitespace_removed);
+ EXPECT_FALSE(
+ url_2.parsed_for_possibly_invalid_spec().potentially_dangling_markup);
+
+ // Constructor.
+ GURL url_3(" \t ht\ntp://\twww.goo\rgle.com/as\ndf< \n ");
+ EXPECT_EQ("http://www.google.com/asdf%3C", url_3.spec());
+ EXPECT_TRUE(
+ url_3.parsed_for_possibly_invalid_spec().potentially_dangling_markup);
+
+ // Relative path resolver.
+ GURL url_4 = url_1.Resolve(" \n /fo\to<\r ");
+ EXPECT_EQ("http://www.google.com/foo%3C", url_4.spec());
+ EXPECT_TRUE(
+ url_4.parsed_for_possibly_invalid_spec().potentially_dangling_markup);
// Note that newlines are NOT stripped from ReplaceComponents.
}
diff --git a/src/url/origin.cc b/src/url/origin.cc
index 1b0a9a6..2bf959c 100644
--- a/src/url/origin.cc
+++ b/src/url/origin.cc
@@ -106,8 +106,10 @@
Origin Origin::UnsafelyCreateOriginWithoutNormalization(
base::StringPiece scheme,
base::StringPiece host,
- uint16_t port) {
- return Origin(scheme, host, port, "", SchemeHostPort::CHECK_CANONICALIZATION);
+ uint16_t port,
+ base::StringPiece suborigin) {
+ return Origin(scheme, host, port, suborigin,
+ SchemeHostPort::CHECK_CANONICALIZATION);
}
Origin Origin::CreateFromNormalizedTupleWithSuborigin(
@@ -172,7 +174,8 @@
}
bool Origin::operator<(const Origin& other) const {
- return tuple_ < other.tuple_;
+ return tuple_ < other.tuple_ ||
+ (tuple_.Equals(other.tuple_) && suborigin_ < other.suborigin_);
}
std::ostream& operator<<(std::ostream& out, const url::Origin& origin) {
diff --git a/src/url/origin.h b/src/url/origin.h
index 4b838e4..9e6b492 100644
--- a/src/url/origin.h
+++ b/src/url/origin.h
@@ -89,9 +89,9 @@
// 3. 'file' URLs all parse as ("file", "", 0).
explicit Origin(const GURL& url);
- // Creates an Origin from a |scheme|, |host|, and |port|. All the parameters
- // must be valid and canonicalized. Do not use this method to create unique
- // origins. Use Origin() for that.
+ // Creates an Origin from a |scheme|, |host|, |port| and |suborigin|. All the
+ // parameters must be valid and canonicalized. Do not use this method to
+ // create unique origins. Use Origin() for that.
//
// This constructor should be used in order to pass 'Origin' objects back and
// forth over IPC (as transitioning through GURL would risk potentially
@@ -100,7 +100,8 @@
static Origin UnsafelyCreateOriginWithoutNormalization(
base::StringPiece scheme,
base::StringPiece host,
- uint16_t port);
+ uint16_t port,
+ base::StringPiece suborigin);
// Creates an origin without sanity checking that the host is canonicalized.
// This should only be used when converting between already normalized types,
diff --git a/src/url/origin_unittest.cc b/src/url/origin_unittest.cc
index d09030a..502ef98 100644
--- a/src/url/origin_unittest.cc
+++ b/src/url/origin_unittest.cc
@@ -363,7 +363,7 @@
SCOPED_TRACE(testing::Message() << test.scheme << "://" << test.host << ":"
<< test.port);
url::Origin origin = url::Origin::UnsafelyCreateOriginWithoutNormalization(
- test.scheme, test.host, test.port);
+ test.scheme, test.host, test.port, "");
EXPECT_EQ(test.scheme, origin.scheme());
EXPECT_EQ(test.host, origin.host());
EXPECT_EQ(test.port, origin.port());
@@ -400,7 +400,7 @@
SCOPED_TRACE(testing::Message() << test.scheme << "://" << test.host << ":"
<< test.port);
url::Origin origin = url::Origin::UnsafelyCreateOriginWithoutNormalization(
- test.scheme, test.host, test.port);
+ test.scheme, test.host, test.port, "");
EXPECT_EQ("", origin.scheme());
EXPECT_EQ("", origin.host());
EXPECT_EQ(0, origin.port());
@@ -430,7 +430,7 @@
<< test.port);
url::Origin origin = url::Origin::UnsafelyCreateOriginWithoutNormalization(
std::string(test.scheme, test.scheme_length),
- std::string(test.host, test.host_length), test.port);
+ std::string(test.host, test.host_length), test.port, "");
EXPECT_EQ("", origin.scheme());
EXPECT_EQ("", origin.host());
EXPECT_EQ(0, origin.port());
diff --git a/src/url/third_party/mozilla/url_parse.cc b/src/url/third_party/mozilla/url_parse.cc
index 4cba88c..d77fb5f 100644
--- a/src/url/third_party/mozilla/url_parse.cc
+++ b/src/url/third_party/mozilla/url_parse.cc
@@ -692,7 +692,7 @@
} // namespace
-Parsed::Parsed() : whitespace_removed(false), inner_parsed_(NULL) {}
+Parsed::Parsed() : potentially_dangling_markup(false), inner_parsed_(NULL) {}
Parsed::Parsed(const Parsed& other)
: scheme(other.scheme),
@@ -703,7 +703,7 @@
path(other.path),
query(other.query),
ref(other.ref),
- whitespace_removed(other.whitespace_removed),
+ potentially_dangling_markup(other.potentially_dangling_markup),
inner_parsed_(NULL) {
if (other.inner_parsed_)
set_inner_parsed(*other.inner_parsed_);
@@ -719,7 +719,7 @@
path = other.path;
query = other.query;
ref = other.ref;
- whitespace_removed = other.whitespace_removed;
+ potentially_dangling_markup = other.potentially_dangling_markup;
if (other.inner_parsed_)
set_inner_parsed(*other.inner_parsed_);
else
diff --git a/src/url/third_party/mozilla/url_parse.h b/src/url/third_party/mozilla/url_parse.h
index 968578b..6d40d3f 100644
--- a/src/url/third_party/mozilla/url_parse.h
+++ b/src/url/third_party/mozilla/url_parse.h
@@ -177,8 +177,12 @@
// the string with the scheme stripped off.
Component GetContent() const;
- // True if whitespace was removed from the URL during parsing.
- bool whitespace_removed;
+ // True if the URL's source contained a raw `<` character, and whitespace was
+ // removed from the URL during parsing
+ //
+ // TODO(mkwst): Link this to something in a spec if
+ // https://github.com/whatwg/url/pull/284 lands.
+ bool potentially_dangling_markup;
// This is used for nested URL types, currently only filesystem. If you
// parse a filesystem URL, the resulting Parsed will have a nested
diff --git a/src/url/url_canon.h b/src/url/url_canon.h
index d093f35..887150b 100644
--- a/src/url/url_canon.h
+++ b/src/url/url_canon.h
@@ -231,14 +231,21 @@
//
// Therefore, callers should not use the buffer, since it may actually be empty,
// use the computed pointer and |*output_len| instead.
-URL_EXPORT const char* RemoveURLWhitespace(const char* input, int input_len,
+//
+// If |input| contained both removable whitespace and a raw `<` character,
+// |potentially_dangling_markup| will be set to `true`. Otherwise, it will be
+// left untouched.
+URL_EXPORT const char* RemoveURLWhitespace(const char* input,
+ int input_len,
CanonOutputT<char>* buffer,
- int* output_len);
+ int* output_len,
+ bool* potentially_dangling_markup);
URL_EXPORT const base::char16* RemoveURLWhitespace(
const base::char16* input,
int input_len,
CanonOutputT<base::char16>* buffer,
- int* output_len);
+ int* output_len,
+ bool* potentially_dangling_markup);
// IDN ------------------------------------------------------------------------
diff --git a/src/url/url_canon_etc.cc b/src/url/url_canon_etc.cc
index 9dd40da..31e9fb5 100644
--- a/src/url/url_canon_etc.cc
+++ b/src/url/url_canon_etc.cc
@@ -22,10 +22,12 @@
// Backend for RemoveURLWhitespace (see declaration in url_canon.h).
// It sucks that we have to do this, since this takes about 13% of the total URL
// canonicalization time.
-template<typename CHAR>
-const CHAR* DoRemoveURLWhitespace(const CHAR* input, int input_len,
+template <typename CHAR>
+const CHAR* DoRemoveURLWhitespace(const CHAR* input,
+ int input_len,
CanonOutputT<CHAR>* buffer,
- int* output_len) {
+ int* output_len,
+ bool* potentially_dangling_markup) {
// Fast verification that there's nothing that needs removal. This is the 99%
// case, so we want it to be fast and don't care about impacting the speed
// when we do find whitespace.
@@ -46,8 +48,11 @@
// Remove the whitespace into the new buffer and return it.
for (int i = 0; i < input_len; i++) {
- if (!IsRemovableURLWhitespace(input[i]))
+ if (!IsRemovableURLWhitespace(input[i])) {
+ if (potentially_dangling_markup && input[i] == 0x3C)
+ *potentially_dangling_markup = true;
buffer->push_back(input[i]);
+ }
}
*output_len = buffer->length();
return buffer->data();
@@ -274,17 +279,22 @@
} // namespace
-const char* RemoveURLWhitespace(const char* input, int input_len,
+const char* RemoveURLWhitespace(const char* input,
+ int input_len,
CanonOutputT<char>* buffer,
- int* output_len) {
- return DoRemoveURLWhitespace(input, input_len, buffer, output_len);
+ int* output_len,
+ bool* potentially_dangling_markup) {
+ return DoRemoveURLWhitespace(input, input_len, buffer, output_len,
+ potentially_dangling_markup);
}
const base::char16* RemoveURLWhitespace(const base::char16* input,
int input_len,
CanonOutputT<base::char16>* buffer,
- int* output_len) {
- return DoRemoveURLWhitespace(input, input_len, buffer, output_len);
+ int* output_len,
+ bool* potentially_dangling_markup) {
+ return DoRemoveURLWhitespace(input, input_len, buffer, output_len,
+ potentially_dangling_markup);
}
char CanonicalSchemeChar(base::char16 ch) {
diff --git a/src/url/url_canon_relative.cc b/src/url/url_canon_relative.cc
index 851368d..659aca7 100644
--- a/src/url/url_canon_relative.cc
+++ b/src/url/url_canon_relative.cc
@@ -441,8 +441,13 @@
CharsetConverter* query_converter,
CanonOutput* output,
Parsed* out_parsed) {
- // Starting point for our output parsed. We'll fix what we change.
+ // |base_parsed| is the starting point for our output. Since we may have
+ // removed whitespace from |relative_url| before entering this method, we'll
+ // carry over the |potentially_dangling_markup| flag.
+ bool potentially_dangling_markup = out_parsed->potentially_dangling_markup;
*out_parsed = base_parsed;
+ if (potentially_dangling_markup)
+ out_parsed->potentially_dangling_markup = true;
// Sanity check: the input should have a host or we'll break badly below.
// We can only resolve relative URLs with base URLs that have hosts and
diff --git a/src/url/url_util.cc b/src/url/url_util.cc
index 0fe9983..a390a9d 100644
--- a/src/url/url_util.cc
+++ b/src/url/url_util.cc
@@ -187,8 +187,8 @@
// This matches the canonicalization done in DoCanonicalize function.
RawCanonOutputT<CHAR> whitespace_buffer;
int spec_len;
- const CHAR* spec = RemoveURLWhitespace(str, str_len,
- &whitespace_buffer, &spec_len);
+ const CHAR* spec =
+ RemoveURLWhitespace(str, str_len, &whitespace_buffer, &spec_len, nullptr);
Component our_scheme;
if (!ExtractScheme(spec, spec_len, &our_scheme)) {
@@ -216,11 +216,8 @@
// Possibly this will result in copying to the new buffer.
RawCanonOutputT<CHAR> whitespace_buffer;
if (whitespace_policy == REMOVE_WHITESPACE) {
- int original_len = spec_len;
- spec =
- RemoveURLWhitespace(spec, original_len, &whitespace_buffer, &spec_len);
- if (spec_len != original_len)
- output_parsed->whitespace_removed = true;
+ spec = RemoveURLWhitespace(spec, spec_len, &whitespace_buffer, &spec_len,
+ &output_parsed->potentially_dangling_markup);
}
Parsed parsed_input;
@@ -298,11 +295,9 @@
// copying to the new buffer.
RawCanonOutputT<CHAR> whitespace_buffer;
int relative_length;
- const CHAR* relative = RemoveURLWhitespace(in_relative, in_relative_length,
- &whitespace_buffer,
- &relative_length);
- if (in_relative_length != relative_length)
- output_parsed->whitespace_removed = true;
+ const CHAR* relative = RemoveURLWhitespace(
+ in_relative, in_relative_length, &whitespace_buffer, &relative_length,
+ &output_parsed->potentially_dangling_markup);
bool base_is_authority_based = false;
bool base_is_hierarchical = false;
diff --git a/src/url/url_util_unittest.cc b/src/url/url_util_unittest.cc
index 6d7c8f7..40e4c9f 100644
--- a/src/url/url_util_unittest.cc
+++ b/src/url/url_util_unittest.cc
@@ -374,6 +374,54 @@
EXPECT_FALSE(resolved_parsed.ref.is_valid());
}
+TEST(URLUtilTest, PotentiallyDanglingMarkup) {
+ struct ResolveRelativeCase {
+ const char* base;
+ const char* rel;
+ bool potentially_dangling_markup;
+ const char* out;
+ } cases[] = {
+ {"https://example.com/", "/path<", false, "https://example.com/path%3C"},
+ {"https://example.com/", "\n/path<", true, "https://example.com/path%3C"},
+ {"https://example.com/", "\r/path<", true, "https://example.com/path%3C"},
+ {"https://example.com/", "\t/path<", true, "https://example.com/path%3C"},
+ {"https://example.com/", "/pa\nth<", true, "https://example.com/path%3C"},
+ {"https://example.com/", "/pa\rth<", true, "https://example.com/path%3C"},
+ {"https://example.com/", "/pa\tth<", true, "https://example.com/path%3C"},
+ {"https://example.com/", "/path\n<", true, "https://example.com/path%3C"},
+ {"https://example.com/", "/path\r<", true, "https://example.com/path%3C"},
+ {"https://example.com/", "/path\r<", true, "https://example.com/path%3C"},
+ {"https://example.com/", "\n/<path", true, "https://example.com/%3Cpath"},
+ {"https://example.com/", "\r/<path", true, "https://example.com/%3Cpath"},
+ {"https://example.com/", "\t/<path", true, "https://example.com/%3Cpath"},
+ {"https://example.com/", "/<pa\nth", true, "https://example.com/%3Cpath"},
+ {"https://example.com/", "/<pa\rth", true, "https://example.com/%3Cpath"},
+ {"https://example.com/", "/<pa\tth", true, "https://example.com/%3Cpath"},
+ {"https://example.com/", "/<path\n", true, "https://example.com/%3Cpath"},
+ {"https://example.com/", "/<path\r", true, "https://example.com/%3Cpath"},
+ {"https://example.com/", "/<path\r", true, "https://example.com/%3Cpath"},
+ };
+
+ for (const auto& test : cases) {
+ SCOPED_TRACE(::testing::Message() << test.base << ", " << test.rel);
+ Parsed base_parsed;
+ ParseStandardURL(test.base, strlen(test.base), &base_parsed);
+
+ std::string resolved;
+ StdStringCanonOutput output(&resolved);
+ Parsed resolved_parsed;
+ bool valid =
+ ResolveRelative(test.base, strlen(test.base), base_parsed, test.rel,
+ strlen(test.rel), NULL, &output, &resolved_parsed);
+ ASSERT_TRUE(valid);
+ output.Complete();
+
+ EXPECT_EQ(test.potentially_dangling_markup,
+ resolved_parsed.potentially_dangling_markup);
+ EXPECT_EQ(test.out, resolved);
+ }
+}
+
TEST(URLUtilTest, TestDomainIs) {
const struct {
const char* canonicalized_host;