| // Copyright 2015 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/domain_reliability/google_configs.h" |
| |
| #include <memory> |
| |
| #include "base/containers/fixed_flat_map.h" |
| #include "base/strings/strcat.h" |
| #include "base/strings/string_util.h" |
| #include "net/base/url_util.h" |
| |
| namespace domain_reliability { |
| |
| namespace { |
| |
| struct GoogleConfigParams { |
| bool include_subdomains; |
| |
| // If true, prepend a collector URL within https://|hostname|/. |
| bool include_origin_specific_collector; |
| |
| // If true, also add a config for www.|hostname|. |
| // |
| // |include_subdomains| will be false in the extra config, but |
| // |include_origin_specific_collector| will be respected, and will use the |
| // www subdomain as the origin for the collector so it matches the config. |
| bool duplicate_for_www; |
| }; |
| |
| const auto kGoogleConfigs = base::MakeFixedFlatMap<std::string_view, |
| GoogleConfigParams>({ |
| // Origins with subdomains and same-origin collectors. Currently, all |
| // origins with same-origin collectors also run collectors on their www |
| // subdomain. (e.g., both foo.com and www.foo.com.) |
| {"google.ac", {true, true, true}}, |
| {"google.ad", {true, true, true}}, |
| {"google.ae", {true, true, true}}, |
| {"google.af", {true, true, true}}, |
| {"google.ag", {true, true, true}}, |
| {"google.al", {true, true, true}}, |
| {"google.am", {true, true, true}}, |
| {"google.as", {true, true, true}}, |
| {"google.at", {true, true, true}}, |
| {"google.az", {true, true, true}}, |
| {"google.ba", {true, true, true}}, |
| {"google.be", {true, true, true}}, |
| {"google.bf", {true, true, true}}, |
| {"google.bg", {true, true, true}}, |
| {"google.bi", {true, true, true}}, |
| {"google.bj", {true, true, true}}, |
| {"google.bs", {true, true, true}}, |
| {"google.bt", {true, true, true}}, |
| {"google.by", {true, true, true}}, |
| {"google.ca", {true, true, true}}, |
| {"google.cc", {true, true, true}}, |
| {"google.cd", {true, true, true}}, |
| {"google.cf", {true, true, true}}, |
| {"google.cg", {true, true, true}}, |
| {"google.ch", {true, true, true}}, |
| {"google.ci", {true, true, true}}, |
| {"google.cl", {true, true, true}}, |
| {"google.cm", {true, true, true}}, |
| {"google.cn", {true, true, true}}, |
| {"google.co.ao", {true, true, true}}, |
| {"google.co.bw", {true, true, true}}, |
| {"google.co.ck", {true, true, true}}, |
| {"google.co.cr", {true, true, true}}, |
| {"google.co.hu", {true, true, true}}, |
| {"google.co.id", {true, true, true}}, |
| {"google.co.il", {true, true, true}}, |
| {"google.co.im", {true, true, true}}, |
| {"google.co.in", {true, true, true}}, |
| {"google.co.je", {true, true, true}}, |
| {"google.co.jp", {true, true, true}}, |
| {"google.co.ke", {true, true, true}}, |
| {"google.co.kr", {true, true, true}}, |
| {"google.co.ls", {true, true, true}}, |
| {"google.co.ma", {true, true, true}}, |
| {"google.co.mz", {true, true, true}}, |
| {"google.co.nz", {true, true, true}}, |
| {"google.co.th", {true, true, true}}, |
| {"google.co.tz", {true, true, true}}, |
| {"google.co.ug", {true, true, true}}, |
| {"google.co.uk", {true, true, true}}, |
| {"google.co.uz", {true, true, true}}, |
| {"google.co.ve", {true, true, true}}, |
| {"google.co.vi", {true, true, true}}, |
| {"google.co.za", {true, true, true}}, |
| {"google.co.zm", {true, true, true}}, |
| {"google.co.zw", {true, true, true}}, |
| {"google.com.af", {true, true, true}}, |
| {"google.com.ag", {true, true, true}}, |
| {"google.com.ai", {true, true, true}}, |
| {"google.com.ar", {true, true, true}}, |
| {"google.com.au", {true, true, true}}, |
| {"google.com.bd", {true, true, true}}, |
| {"google.com.bh", {true, true, true}}, |
| {"google.com.bn", {true, true, true}}, |
| {"google.com.bo", {true, true, true}}, |
| {"google.com.br", {true, true, true}}, |
| {"google.com.by", {true, true, true}}, |
| {"google.com.bz", {true, true, true}}, |
| {"google.com.cn", {true, true, true}}, |
| {"google.com.co", {true, true, true}}, |
| {"google.com.cu", {true, true, true}}, |
| {"google.com.cy", {true, true, true}}, |
| {"google.com.do", {true, true, true}}, |
| {"google.com.ec", {true, true, true}}, |
| {"google.com.eg", {true, true, true}}, |
| {"google.com.et", {true, true, true}}, |
| {"google.com.fj", {true, true, true}}, |
| {"google.com.ge", {true, true, true}}, |
| {"google.com.gh", {true, true, true}}, |
| {"google.com.gi", {true, true, true}}, |
| {"google.com.gr", {true, true, true}}, |
| {"google.com.gt", {true, true, true}}, |
| {"google.com.hk", {true, true, true}}, |
| {"google.com.iq", {true, true, true}}, |
| {"google.com.jm", {true, true, true}}, |
| {"google.com.jo", {true, true, true}}, |
| {"google.com.kh", {true, true, true}}, |
| {"google.com.kw", {true, true, true}}, |
| {"google.com.lb", {true, true, true}}, |
| {"google.com.ly", {true, true, true}}, |
| {"google.com.mm", {true, true, true}}, |
| {"google.com.mt", {true, true, true}}, |
| {"google.com.mx", {true, true, true}}, |
| {"google.com.my", {true, true, true}}, |
| {"google.com.na", {true, true, true}}, |
| {"google.com.nf", {true, true, true}}, |
| {"google.com.ng", {true, true, true}}, |
| {"google.com.ni", {true, true, true}}, |
| {"google.com.np", {true, true, true}}, |
| {"google.com.nr", {true, true, true}}, |
| {"google.com.om", {true, true, true}}, |
| {"google.com.pa", {true, true, true}}, |
| {"google.com.pe", {true, true, true}}, |
| {"google.com.pg", {true, true, true}}, |
| {"google.com.ph", {true, true, true}}, |
| {"google.com.pk", {true, true, true}}, |
| {"google.com.pl", {true, true, true}}, |
| {"google.com.pr", {true, true, true}}, |
| {"google.com.py", {true, true, true}}, |
| {"google.com.qa", {true, true, true}}, |
| {"google.com.ru", {true, true, true}}, |
| {"google.com.sa", {true, true, true}}, |
| {"google.com.sb", {true, true, true}}, |
| {"google.com.sg", {true, true, true}}, |
| {"google.com.sl", {true, true, true}}, |
| {"google.com.sv", {true, true, true}}, |
| {"google.com.tj", {true, true, true}}, |
| {"google.com.tn", {true, true, true}}, |
| {"google.com.tr", {true, true, true}}, |
| {"google.com.tw", {true, true, true}}, |
| {"google.com.ua", {true, true, true}}, |
| {"google.com.uy", {true, true, true}}, |
| {"google.com.vc", {true, true, true}}, |
| {"google.com.ve", {true, true, true}}, |
| {"google.com.vn", {true, true, true}}, |
| {"google.cv", {true, true, true}}, |
| {"google.cz", {true, true, true}}, |
| {"google.de", {true, true, true}}, |
| {"google.dj", {true, true, true}}, |
| {"google.dk", {true, true, true}}, |
| {"google.dm", {true, true, true}}, |
| {"google.dz", {true, true, true}}, |
| {"google.ee", {true, true, true}}, |
| {"google.es", {true, true, true}}, |
| {"google.fi", {true, true, true}}, |
| {"google.fm", {true, true, true}}, |
| {"google.fr", {true, true, true}}, |
| {"google.ga", {true, true, true}}, |
| {"google.ge", {true, true, true}}, |
| {"google.gg", {true, true, true}}, |
| {"google.gl", {true, true, true}}, |
| {"google.gm", {true, true, true}}, |
| {"google.gp", {true, true, true}}, |
| {"google.gr", {true, true, true}}, |
| {"google.gy", {true, true, true}}, |
| {"google.hk", {true, true, true}}, |
| {"google.hn", {true, true, true}}, |
| {"google.hr", {true, true, true}}, |
| {"google.ht", {true, true, true}}, |
| {"google.hu", {true, true, true}}, |
| {"google.ie", {true, true, true}}, |
| {"google.im", {true, true, true}}, |
| {"google.iq", {true, true, true}}, |
| {"google.ir", {true, true, true}}, |
| {"google.is", {true, true, true}}, |
| {"google.it", {true, true, true}}, |
| {"google.it.ao", {true, true, true}}, |
| {"google.je", {true, true, true}}, |
| {"google.jo", {true, true, true}}, |
| {"google.jp", {true, true, true}}, |
| {"google.kg", {true, true, true}}, |
| {"google.ki", {true, true, true}}, |
| {"google.kz", {true, true, true}}, |
| {"google.la", {true, true, true}}, |
| {"google.li", {true, true, true}}, |
| {"google.lk", {true, true, true}}, |
| {"google.lt", {true, true, true}}, |
| {"google.lu", {true, true, true}}, |
| {"google.lv", {true, true, true}}, |
| {"google.md", {true, true, true}}, |
| {"google.me", {true, true, true}}, |
| {"google.mg", {true, true, true}}, |
| {"google.mk", {true, true, true}}, |
| {"google.ml", {true, true, true}}, |
| {"google.mn", {true, true, true}}, |
| {"google.ms", {true, true, true}}, |
| {"google.mu", {true, true, true}}, |
| {"google.mv", {true, true, true}}, |
| {"google.mw", {true, true, true}}, |
| {"google.ne", {true, true, true}}, |
| {"google.ne.jp", {true, true, true}}, |
| {"google.ng", {true, true, true}}, |
| {"google.nl", {true, true, true}}, |
| {"google.no", {true, true, true}}, |
| {"google.nr", {true, true, true}}, |
| {"google.nu", {true, true, true}}, |
| {"google.off.ai", {true, true, true}}, |
| {"google.pk", {true, true, true}}, |
| {"google.pl", {true, true, true}}, |
| {"google.pn", {true, true, true}}, |
| {"google.ps", {true, true, true}}, |
| {"google.pt", {true, true, true}}, |
| {"google.ro", {true, true, true}}, |
| {"google.rs", {true, true, true}}, |
| {"google.ru", {true, true, true}}, |
| {"google.rw", {true, true, true}}, |
| {"google.sc", {true, true, true}}, |
| {"google.se", {true, true, true}}, |
| {"google.sh", {true, true, true}}, |
| {"google.si", {true, true, true}}, |
| {"google.sk", {true, true, true}}, |
| {"google.sm", {true, true, true}}, |
| {"google.sn", {true, true, true}}, |
| {"google.so", {true, true, true}}, |
| {"google.sr", {true, true, true}}, |
| {"google.st", {true, true, true}}, |
| {"google.td", {true, true, true}}, |
| {"google.tg", {true, true, true}}, |
| {"google.tk", {true, true, true}}, |
| {"google.tl", {true, true, true}}, |
| {"google.tm", {true, true, true}}, |
| {"google.tn", {true, true, true}}, |
| {"google.to", {true, true, true}}, |
| {"google.tt", {true, true, true}}, |
| {"google.us", {true, true, true}}, |
| {"google.uz", {true, true, true}}, |
| {"google.vg", {true, true, true}}, |
| {"google.vu", {true, true, true}}, |
| {"google.ws", {true, true, true}}, |
| {"l.google.com", {true, true, true}}, |
| |
| // google.com is a special case. We have a custom config for www.google.com, |
| // so set duplicate_for_www = false. |
| {"google.com", {true, true, false}}, |
| |
| // Origins with subdomains and without same-origin collectors. |
| {"2mdn.net", {true, false, false}}, |
| {"adgoogle.net", {true, false, false}}, |
| {"admeld.com", {true, false, false}}, |
| {"admob.biz", {true, false, false}}, |
| {"admob.co.in", {true, false, false}}, |
| {"admob.co.kr", {true, false, false}}, |
| {"admob.co.nz", {true, false, false}}, |
| {"admob.co.uk", {true, false, false}}, |
| {"admob.co.za", {true, false, false}}, |
| {"admob.com", {true, false, false}}, |
| {"admob.com.br", {true, false, false}}, |
| {"admob.com.es", {true, false, false}}, |
| {"admob.com.fr", {true, false, false}}, |
| {"admob.com.mx", {true, false, false}}, |
| {"admob.com.pt", {true, false, false}}, |
| {"admob.de", {true, false, false}}, |
| {"admob.dk", {true, false, false}}, |
| {"admob.es", {true, false, false}}, |
| {"admob.fi", {true, false, false}}, |
| {"admob.fr", {true, false, false}}, |
| {"admob.gr", {true, false, false}}, |
| {"admob.hk", {true, false, false}}, |
| {"admob.ie", {true, false, false}}, |
| {"admob.in", {true, false, false}}, |
| {"admob.it", {true, false, false}}, |
| {"admob.jp", {true, false, false}}, |
| {"admob.kr", {true, false, false}}, |
| {"admob.mobi", {true, false, false}}, |
| {"admob.no", {true, false, false}}, |
| {"admob.ph", {true, false, false}}, |
| {"admob.pt", {true, false, false}}, |
| {"admob.sg", {true, false, false}}, |
| {"admob.tw", {true, false, false}}, |
| {"admob.us", {true, false, false}}, |
| {"admob.vn", {true, false, false}}, |
| {"adwhirl.com", {true, false, false}}, |
| {"ampproject.com", {true, false, false}}, |
| {"ampproject.net", {true, false, false}}, |
| {"ampproject.org", {true, false, false}}, |
| {"android.com", {true, false, false}}, |
| {"cdn.ampproject.org", {true, false, false}}, |
| {"chromecast.com", {true, false, false}}, |
| {"chromeexperiments.com", {true, false, false}}, |
| {"chromestatus.com", {true, false, false}}, |
| {"chromium.org", {true, false, false}}, |
| {"clients6.google.com", {true, false, false}}, |
| {"cloudendpointsapis.com", {true, false, false}}, |
| {"dartmotif.com", {true, false, false}}, |
| {"dartsearch.net", {true, false, false}}, |
| {"doubleclick.com", {true, false, false}}, |
| {"doubleclick.ne.jp", {true, false, false}}, |
| {"doubleclick.net", {true, false, false}}, |
| {"doubleclickusercontent.com", {true, false, false}}, |
| {"fls.doubleclick.net", {true, false, false}}, |
| {"g.co", {true, false, false}}, |
| {"g.doubleclick.net", {true, false, false}}, |
| {"ggpht.com", {true, false, false}}, |
| {"gmodules.com", {true, false, false}}, |
| {"goo.gl", {true, false, false}}, |
| {"google-syndication.com", {true, false, false}}, |
| {"google.cat", {true, false, false}}, |
| {"google.info", {true, false, false}}, |
| {"google.jobs", {true, false, false}}, |
| {"google.net", {true, false, false}}, |
| {"google.org", {true, false, false}}, |
| {"google.stackdriver.com", {true, false, false}}, |
| {"googleadservices.com", {true, false, false}}, |
| {"googleadsserving.cn", {true, false, false}}, |
| {"googlealumni.com", {true, false, false}}, |
| {"googleapis.cn", {true, false, false}}, |
| {"googleapis.com", {true, false, false}}, |
| {"googleapps.com", {true, false, false}}, |
| {"googlecbs.com", {true, false, false}}, |
| {"googlecode.com", {true, false, false}}, |
| {"googlecommerce.com", {true, false, false}}, |
| {"googledrive.com", {true, false, false}}, |
| {"googleenterprise.com", {true, false, false}}, |
| {"googlefiber.com", {true, false, false}}, |
| {"googlefiber.net", {true, false, false}}, |
| {"googlegoro.com", {true, false, false}}, |
| {"googlehosted.com", {true, false, false}}, |
| {"googlepayments.com", {true, false, false}}, |
| {"googlesource.com", {true, false, false}}, |
| {"googlesyndication.com", {true, false, false}}, |
| {"googletagmanager.com", {true, false, false}}, |
| {"googletagservices.com", {true, false, false}}, |
| {"googleusercontent.com", {true, false, false}}, |
| {"googlezip.net", {true, false, false}}, |
| {"gstatic.cn", {true, false, false}}, |
| {"gstatic.com", {true, false, false}}, |
| {"gvt3.com", {true, false, false}}, |
| {"gvt9.com", {true, false, false}}, |
| {"picasa.com", {true, false, false}}, |
| {"recaptcha.net", {true, false, false}}, |
| {"stackdriver.com", {true, false, false}}, |
| {"usercontent.google.com", {true, false, false}}, |
| {"waze.com", {true, false, false}}, |
| {"withgoogle.com", {true, false, false}}, |
| {"youtu.be", {true, false, false}}, |
| {"youtube-3rd-party.com", {true, false, false}}, |
| {"youtube-nocookie.com", {true, false, false}}, |
| {"youtube.ae", {true, false, false}}, |
| {"youtube.al", {true, false, false}}, |
| {"youtube.am", {true, false, false}}, |
| {"youtube.at", {true, false, false}}, |
| {"youtube.az", {true, false, false}}, |
| {"youtube.ba", {true, false, false}}, |
| {"youtube.be", {true, false, false}}, |
| {"youtube.bg", {true, false, false}}, |
| {"youtube.bh", {true, false, false}}, |
| {"youtube.bo", {true, false, false}}, |
| {"youtube.ca", {true, false, false}}, |
| {"youtube.cat", {true, false, false}}, |
| {"youtube.ch", {true, false, false}}, |
| {"youtube.cl", {true, false, false}}, |
| {"youtube.co", {true, false, false}}, |
| {"youtube.co.ae", {true, false, false}}, |
| {"youtube.co.at", {true, false, false}}, |
| {"youtube.co.hu", {true, false, false}}, |
| {"youtube.co.id", {true, false, false}}, |
| {"youtube.co.il", {true, false, false}}, |
| {"youtube.co.in", {true, false, false}}, |
| {"youtube.co.jp", {true, false, false}}, |
| {"youtube.co.ke", {true, false, false}}, |
| {"youtube.co.kr", {true, false, false}}, |
| {"youtube.co.ma", {true, false, false}}, |
| {"youtube.co.nz", {true, false, false}}, |
| {"youtube.co.th", {true, false, false}}, |
| {"youtube.co.ug", {true, false, false}}, |
| {"youtube.co.uk", {true, false, false}}, |
| {"youtube.co.ve", {true, false, false}}, |
| {"youtube.co.za", {true, false, false}}, |
| {"youtube.com", {true, false, false}}, |
| {"youtube.com.ar", {true, false, false}}, |
| {"youtube.com.au", {true, false, false}}, |
| {"youtube.com.az", {true, false, false}}, |
| {"youtube.com.bh", {true, false, false}}, |
| {"youtube.com.bo", {true, false, false}}, |
| {"youtube.com.br", {true, false, false}}, |
| {"youtube.com.by", {true, false, false}}, |
| {"youtube.com.co", {true, false, false}}, |
| {"youtube.com.do", {true, false, false}}, |
| {"youtube.com.ee", {true, false, false}}, |
| {"youtube.com.eg", {true, false, false}}, |
| {"youtube.com.es", {true, false, false}}, |
| {"youtube.com.gh", {true, false, false}}, |
| {"youtube.com.gr", {true, false, false}}, |
| {"youtube.com.gt", {true, false, false}}, |
| {"youtube.com.hk", {true, false, false}}, |
| {"youtube.com.hr", {true, false, false}}, |
| {"youtube.com.jm", {true, false, false}}, |
| {"youtube.com.jo", {true, false, false}}, |
| {"youtube.com.kw", {true, false, false}}, |
| {"youtube.com.lb", {true, false, false}}, |
| {"youtube.com.lv", {true, false, false}}, |
| {"youtube.com.mk", {true, false, false}}, |
| {"youtube.com.mt", {true, false, false}}, |
| {"youtube.com.mx", {true, false, false}}, |
| {"youtube.com.my", {true, false, false}}, |
| {"youtube.com.ng", {true, false, false}}, |
| {"youtube.com.om", {true, false, false}}, |
| {"youtube.com.pe", {true, false, false}}, |
| {"youtube.com.ph", {true, false, false}}, |
| {"youtube.com.pk", {true, false, false}}, |
| {"youtube.com.pt", {true, false, false}}, |
| {"youtube.com.qa", {true, false, false}}, |
| {"youtube.com.ro", {true, false, false}}, |
| {"youtube.com.sa", {true, false, false}}, |
| {"youtube.com.sg", {true, false, false}}, |
| {"youtube.com.tn", {true, false, false}}, |
| {"youtube.com.tr", {true, false, false}}, |
| {"youtube.com.tw", {true, false, false}}, |
| {"youtube.com.ua", {true, false, false}}, |
| {"youtube.com.uy", {true, false, false}}, |
| {"youtube.com.ve", {true, false, false}}, |
| {"youtube.cz", {true, false, false}}, |
| {"youtube.de", {true, false, false}}, |
| {"youtube.dk", {true, false, false}}, |
| {"youtube.ee", {true, false, false}}, |
| {"youtube.es", {true, false, false}}, |
| {"youtube.fi", {true, false, false}}, |
| {"youtube.fr", {true, false, false}}, |
| {"youtube.ge", {true, false, false}}, |
| {"youtube.gr", {true, false, false}}, |
| {"youtube.gt", {true, false, false}}, |
| {"youtube.hk", {true, false, false}}, |
| {"youtube.hr", {true, false, false}}, |
| {"youtube.hu", {true, false, false}}, |
| {"youtube.ie", {true, false, false}}, |
| {"youtube.in", {true, false, false}}, |
| {"youtube.is", {true, false, false}}, |
| {"youtube.it", {true, false, false}}, |
| {"youtube.jo", {true, false, false}}, |
| {"youtube.jp", {true, false, false}}, |
| {"youtube.kr", {true, false, false}}, |
| {"youtube.lk", {true, false, false}}, |
| {"youtube.lt", {true, false, false}}, |
| {"youtube.lv", {true, false, false}}, |
| {"youtube.ma", {true, false, false}}, |
| {"youtube.md", {true, false, false}}, |
| {"youtube.me", {true, false, false}}, |
| {"youtube.mk", {true, false, false}}, |
| {"youtube.mx", {true, false, false}}, |
| {"youtube.my", {true, false, false}}, |
| {"youtube.ng", {true, false, false}}, |
| {"youtube.nl", {true, false, false}}, |
| {"youtube.no", {true, false, false}}, |
| {"youtube.pe", {true, false, false}}, |
| {"youtube.ph", {true, false, false}}, |
| {"youtube.pk", {true, false, false}}, |
| {"youtube.pl", {true, false, false}}, |
| {"youtube.pr", {true, false, false}}, |
| {"youtube.pt", {true, false, false}}, |
| {"youtube.qa", {true, false, false}}, |
| {"youtube.ro", {true, false, false}}, |
| {"youtube.rs", {true, false, false}}, |
| {"youtube.ru", {true, false, false}}, |
| {"youtube.sa", {true, false, false}}, |
| {"youtube.se", {true, false, false}}, |
| {"youtube.sg", {true, false, false}}, |
| {"youtube.si", {true, false, false}}, |
| {"youtube.sk", {true, false, false}}, |
| {"youtube.sn", {true, false, false}}, |
| {"youtube.tn", {true, false, false}}, |
| {"youtube.ua", {true, false, false}}, |
| {"youtube.ug", {true, false, false}}, |
| {"youtube.uy", {true, false, false}}, |
| {"youtube.vn", {true, false, false}}, |
| {"youtubeeducation.com", {true, false, false}}, |
| {"youtubemobilesupport.com", {true, false, false}}, |
| {"ytimg.com", {true, false, false}}, |
| |
| // Origins without subdomains and with same-origin collectors. |
| {"accounts.google.com", {false, true, false}}, |
| {"apis.google.com", {false, true, false}}, |
| {"app.google.stackdriver.com", {false, true, false}}, |
| {"b.mail.google.com", {false, true, false}}, |
| {"chatenabled.mail.google.com", {false, true, false}}, |
| {"ddm.google.com", {false, true, false}}, |
| {"gmail.com", {false, true, false}}, |
| {"gmail.google.com", {false, true, false}}, |
| {"mail-attachment.googleusercontent.com", {false, true, false}}, |
| {"mail.google.com", {false, true, false}}, |
| {"www.gmail.com", {false, true, false}}, |
| |
| // Origins without subdomains or same-origin collectors. |
| {"ad.doubleclick.net", {false, false, false}}, |
| {"drive.google.com", {false, false, false}}, |
| {"redirector.googlevideo.com", {false, false, false}}, |
| }); |
| |
| const char* const kGoogleStandardCollectors[] = { |
| "https://beacons.gcp.gvt2.com/domainreliability/upload", |
| "https://beacons.gvt2.com/domainreliability/upload", |
| "https://beacons2.gvt2.com/domainreliability/upload", |
| "https://beacons3.gvt2.com/domainreliability/upload", |
| "https://beacons4.gvt2.com/domainreliability/upload", |
| "https://beacons5.gvt2.com/domainreliability/upload", |
| "https://beacons5.gvt3.com/domainreliability/upload", |
| "https://clients2.google.com/domainreliability/upload", |
| }; |
| |
| const char* const kGoogleOriginSpecificCollectorPathString = |
| "/domainreliability/upload"; |
| |
| std::unique_ptr<const DomainReliabilityConfig> CreateGoogleConfig( |
| std::string_view hostname, |
| const GoogleConfigParams& params, |
| bool is_www) { |
| CHECK(params.duplicate_for_www || !is_www); |
| |
| bool include_subdomains = params.include_subdomains && !is_www; |
| |
| auto config = std::make_unique<DomainReliabilityConfig>(); |
| GURL url(base::StrCat({"https://", (is_www ? "www." : ""), hostname, "/"})); |
| config->origin = url::Origin::Create(url); |
| config->include_subdomains = include_subdomains; |
| config->collectors.clear(); |
| if (params.include_origin_specific_collector) { |
| GURL::Replacements replacements; |
| replacements.SetPathStr(kGoogleOriginSpecificCollectorPathString); |
| config->collectors.push_back( |
| std::make_unique<GURL>(url.ReplaceComponents(replacements))); |
| } |
| for (const char* collector : kGoogleStandardCollectors) { |
| config->collectors.push_back(std::make_unique<GURL>(collector)); |
| } |
| config->success_sample_rate = 0.05; |
| config->failure_sample_rate = 1.00; |
| config->path_prefixes.clear(); |
| return config; |
| } |
| |
| } // namespace |
| |
| std::unique_ptr<const DomainReliabilityConfig> MaybeGetGoogleConfig( |
| const std::string& hostname) { |
| bool is_www_subdomain = |
| base::StartsWith(hostname, "www.", base::CompareCase::SENSITIVE); |
| |
| const auto itr = kGoogleConfigs.find(hostname); |
| if (itr != std::end(kGoogleConfigs)) { |
| return CreateGoogleConfig(hostname, itr->second, /*is_www=*/false); |
| } |
| std::string hostname_parent = net::GetSuperdomain(hostname); |
| const auto parent_it = kGoogleConfigs.find(hostname_parent); |
| if (parent_it != std::end(kGoogleConfigs)) { |
| const GoogleConfigParams& params = parent_it->second; |
| if (is_www_subdomain && params.duplicate_for_www) { |
| return CreateGoogleConfig(hostname_parent, params, /*is_www=*/true); |
| } |
| if (params.include_subdomains) { |
| return CreateGoogleConfig(hostname_parent, params, /*is_www=*/false); |
| } |
| } |
| |
| return nullptr; |
| } |
| |
| std::vector<std::unique_ptr<const DomainReliabilityConfig>> |
| GetAllGoogleConfigsForTesting() { |
| std::vector<std::unique_ptr<const DomainReliabilityConfig>> configs_out; |
| |
| for (const auto& [hostname, params] : kGoogleConfigs) { |
| configs_out.push_back(CreateGoogleConfig(hostname, params, false)); |
| if (params.duplicate_for_www) { |
| configs_out.push_back(CreateGoogleConfig(hostname, params, true)); |
| } |
| } |
| return configs_out; |
| } |
| |
| } // namespace domain_reliability |