all-add-trk-prefixes-to-possibly-evil-connections.patch 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827
  1. From 06f6141610cb2aa562c94dbb9f1f4355e4b34c5d Mon Sep 17 00:00:00 2001
  2. From: Jan Engelhardt <jengelh@inai.de>
  3. Date: Mon, 30 Sep 2019 09:37:51 +0200
  4. Subject: [PATCH 75/76] all: add trk: prefixes to possibly evil connections
  5. Prefix URLs to Google services with trk: so that whenever something
  6. tries to load them, the developer will be informed via printf and
  7. dialog (extra info bar between URLbar and content window) about this.
  8. If you see such dialog, we know that (a) either the URL needs to be
  9. whitelisted, or (b) the feature that triggered it needs to be disabled
  10. by default.
  11. ---
  12. build/mac/tweak_info_plist.py | 2 +-
  13. .../customization/customization_document.cc | 2 +-
  14. .../file_manager/private_api_drive.cc | 2 +-
  15. .../file_manager/private_api_misc.cc | 2 +-
  16. .../remote_commands/crd_host_delegate.cc | 6 +++---
  17. .../cryptotoken_private_api.cc | 4 ++--
  18. chrome/browser/extensions/install_signer.cc | 2 +-
  19. .../media/webrtc/webrtc_event_log_uploader.cc | 2 +-
  20. .../media/webrtc/webrtc_log_uploader.cc | 2 +-
  21. .../nacl_host/nacl_infobar_delegate.cc | 2 +-
  22. .../profiles/profile_avatar_downloader.cc | 2 +-
  23. .../default_apps/external_extensions.json | 6 +++---
  24. .../client_side_detection_service.cc | 2 +-
  25. .../download_protection/download_feedback.cc | 2 +-
  26. .../spellcheck_hunspell_dictionary.cc | 2 +-
  27. .../supervised_user_service.cc | 2 +-
  28. .../browser/tracing/crash_service_uploader.cc | 2 +-
  29. .../ui/views/outdated_upgrade_bubble_view.cc | 2 +-
  30. .../ui/webui/ntp/ntp_resource_cache.cc | 8 ++++----
  31. .../components/recovery_component.cc | 2 +-
  32. .../crash/crashpad_crash_reporter.cc | 2 +-
  33. .../extensions/chrome_extensions_client.cc | 4 ++--
  34. .../setup/google_chrome_behaviors.cc | 2 +-
  35. .../browser/service/cast_service_simple.cc | 2 +-
  36. chromecast/crash/linux/minidump_uploader.cc | 2 +-
  37. .../simple_geolocation_provider.cc | 2 +-
  38. .../common/cloud_devices_urls.cc | 8 ++++----
  39. components/drive/service/drive_api_service.cc | 4 ++--
  40. components/feedback/feedback_uploader.cc | 2 +-
  41. components/gcm_driver/gcm_account_tracker.cc | 4 ++--
  42. components/google/core/common/google_util.cc | 2 +-
  43. .../core/browser/web_history_service.cc | 6 +++---
  44. components/metrics/url_constants.cc | 2 +-
  45. .../core/browser/password_store.cc | 8 ++++----
  46. components/rappor/rappor_service_impl.cc | 2 +-
  47. .../safe_search_url_checker_client.cc | 2 +-
  48. .../safe_search_api/stub_url_checker.cc | 2 +-
  49. .../core/browser/translate_url_fetcher.cc | 1 +
  50. .../translate/core/common/translate_util.cc | 2 +-
  51. .../variations/variations_url_constants.cc | 2 +-
  52. .../speech/speech_recognition_engine.cc | 2 +-
  53. .../browser/webauth/authenticator_common.cc | 4 ++--
  54. .../shell/browser/shell_browser_main_parts.cc | 2 +-
  55. google_apis/gaia/gaia_constants.cc | 20 +++++++++----------
  56. google_apis/gaia/gaia_urls.cc | 1 +
  57. google_apis/gcm/engine/gservices_settings.cc | 6 +++---
  58. .../notifier/base/gaia_token_pre_xmpp_auth.cc | 2 +-
  59. remoting/base/breakpad_mac.mm | 2 +-
  60. remoting/protocol/jingle_messages.cc | 2 +-
  61. rlz/lib/lib_values.cc | 2 +-
  62. third_party/libjingle_xmpp/xmpp/constants.cc | 6 +++---
  63. .../chromevox/background/prefs.js | 4 ++--
  64. .../chromevoxclassic/host/chrome/host.js | 4 ++--
  65. ui/views/examples/webview_example.cc | 2 +-
  66. 54 files changed, 89 insertions(+), 87 deletions(-)
  67. --- a/build/apple/tweak_info_plist.py
  68. +++ b/build/apple/tweak_info_plist.py
  69. @@ -195,7 +195,7 @@ def _AddKeystoneKeys(plist, bundle_ident
  70. also requires the |bundle_identifier| argument (com.example.product)."""
  71. plist['KSVersion'] = plist['CFBundleShortVersionString']
  72. plist['KSProductID'] = bundle_identifier
  73. - plist['KSUpdateURL'] = 'https://tools.google.com/service/update2'
  74. + plist['KSUpdateURL'] = 'trk:132:https://tools.google.com/service/update2'
  75. _RemoveKeys(plist, 'KSChannelID')
  76. if base_tag != '':
  77. --- a/chrome/browser/chromeos/customization/customization_document.cc
  78. +++ b/chrome/browser/chromeos/customization/customization_document.cc
  79. @@ -172,7 +172,7 @@ std::string ReadFileInBackground(const b
  80. // Template URL where to fetch OEM services customization manifest from.
  81. const char ServicesCustomizationDocument::kManifestUrl[] =
  82. - "https://ssl.gstatic.com/chrome/chromeos-customization/%s.json";
  83. + "trk:151:https://ssl.gstatic.com/chrome/chromeos-customization/%s.json";
  84. // A custom extensions::ExternalLoader that the ServicesCustomizationDocument
  85. // creates and uses to publish OEM default apps to the extensions system.
  86. --- a/chrome/browser/chromeos/extensions/file_manager/private_api_drive.cc
  87. +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_drive.cc
  88. @@ -860,7 +860,7 @@ void FileManagerPrivateInternalGetDownlo
  89. const CoreAccountId& account_id =
  90. identity_manager->GetPrimaryAccountId(signin::ConsentLevel::kNotRequired);
  91. std::vector<std::string> scopes;
  92. - scopes.emplace_back("https://www.googleapis.com/auth/drive.readonly");
  93. + scopes.emplace_back("trk:208:https://www.googleapis.com/auth/drive.readonly");
  94. scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory =
  95. content::BrowserContext::GetDefaultStoragePartition(
  96. --- a/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc
  97. +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_misc.cc
  98. @@ -82,7 +82,7 @@ namespace {
  99. using api::file_manager_private::ProfileInfo;
  100. -const char kCWSScope[] = "https://www.googleapis.com/auth/chromewebstore";
  101. +const char kCWSScope[] = "trk:209:https://www.googleapis.com/auth/chromewebstore";
  102. // Thresholds for mountCrostini() API.
  103. constexpr base::TimeDelta kMountCrostiniSlowOperationThreshold =
  104. --- a/chrome/browser/chromeos/policy/remote_commands/crd_host_delegate.cc
  105. +++ b/chrome/browser/chromeos/policy/remote_commands/crd_host_delegate.cc
  106. @@ -78,11 +78,11 @@ constexpr char kCRDConnectClientKey[] =
  107. // OAuth2 Token scopes
  108. constexpr char kCloudDevicesOAuth2Scope[] =
  109. - "https://www.googleapis.com/auth/clouddevices";
  110. + "trk:233:https://www.googleapis.com/auth/clouddevices";
  111. constexpr char kChromotingRemoteSupportOAuth2Scope[] =
  112. - "https://www.googleapis.com/auth/chromoting.remote.support";
  113. + "trk:234:https://www.googleapis.com/auth/chromoting.remote.support";
  114. constexpr char kTachyonOAuth2Scope[] =
  115. - "https://www.googleapis.com/auth/tachyon";
  116. + "trk:235:https://www.googleapis.com/auth/tachyon";
  117. } // namespace
  118. --- a/chrome/browser/extensions/api/cryptotoken_private/cryptotoken_private_api.cc
  119. +++ b/chrome/browser/extensions/api/cryptotoken_private/cryptotoken_private_api.cc
  120. @@ -42,8 +42,8 @@ namespace {
  121. const char kGoogleDotCom[] = "google.com";
  122. constexpr const char* kGoogleGstaticAppIds[] = {
  123. - "https://www.gstatic.com/securitykey/origins.json",
  124. - "https://www.gstatic.com/securitykey/a/google.com/origins.json"};
  125. + "trk:273:https://www.gstatic.com/securitykey/origins.json",
  126. + "trk:274:https://www.gstatic.com/securitykey/a/google.com/origins.json"};
  127. // ContainsAppIdByHash returns true iff the SHA-256 hash of one of the
  128. // elements of |list| equals |hash|.
  129. --- a/chrome/browser/extensions/install_signer.cc
  130. +++ b/chrome/browser/extensions/install_signer.cc
  131. @@ -65,7 +65,7 @@ const int kSignatureFormatVersion = 2;
  132. const size_t kSaltBytes = 32;
  133. const char kBackendUrl[] =
  134. - "https://www.googleapis.com/chromewebstore/v1.1/items/verify";
  135. + "trk:222:https://www.googleapis.com/chromewebstore/v1.1/items/verify";
  136. const char kPublicKeyPEM[] = \
  137. "-----BEGIN PUBLIC KEY-----" \
  138. --- a/chrome/browser/media/webrtc/webrtc_event_log_uploader.cc
  139. +++ b/chrome/browser/media/webrtc/webrtc_event_log_uploader.cc
  140. @@ -122,7 +122,7 @@ void OnURLLoadUploadProgress(uint64_t cu
  141. } // namespace
  142. const char WebRtcEventLogUploaderImpl::kUploadURL[] =
  143. - "https://clients2.google.com/cr/report";
  144. + "trk:300:https://clients2.google.com/cr/report";
  145. WebRtcEventLogUploaderImpl::Factory::Factory(
  146. scoped_refptr<base::SequencedTaskRunner> task_runner)
  147. --- a/chrome/browser/media/webrtc/webrtc_log_uploader.cc
  148. +++ b/chrome/browser/media/webrtc/webrtc_log_uploader.cc
  149. @@ -482,7 +482,7 @@ void WebRtcLogUploader::UploadCompressed
  150. "Not implemented, it would be good to do so."
  151. })");
  152. - constexpr char kUploadURL[] = "https://clients2.google.com/cr/report";
  153. + constexpr char kUploadURL[] = "trk:301:https://clients2.google.com/cr/report";
  154. auto resource_request = std::make_unique<network::ResourceRequest>();
  155. resource_request->url = !upload_url_for_testing_.is_empty()
  156. ? upload_url_for_testing_
  157. --- a/chrome/browser/nacl_host/nacl_infobar_delegate.cc
  158. +++ b/chrome/browser/nacl_host/nacl_infobar_delegate.cc
  159. @@ -32,7 +32,7 @@ base::string16 NaClInfoBarDelegate::GetL
  160. }
  161. GURL NaClInfoBarDelegate::GetLinkURL() const {
  162. - return GURL("https://support.google.com/chrome/?p=ib_nacl");
  163. + return GURL("trk:143:https://support.google.com/chrome/?p=ib_nacl");
  164. }
  165. base::string16 NaClInfoBarDelegate::GetMessageText() const {
  166. --- a/chrome/browser/profiles/profile_avatar_downloader.cc
  167. +++ b/chrome/browser/profiles/profile_avatar_downloader.cc
  168. @@ -19,7 +19,7 @@
  169. namespace {
  170. const char kHighResAvatarDownloadUrlPrefix[] =
  171. - "https://www.gstatic.com/chrome/profile_avatars/";
  172. + "trk:271:https://www.gstatic.com/chrome/profile_avatars/";
  173. }
  174. ProfileAvatarDownloader::ProfileAvatarDownloader(size_t icon_index,
  175. --- a/chrome/browser/resources/default_apps/external_extensions.json
  176. +++ b/chrome/browser/resources/default_apps/external_extensions.json
  177. @@ -27,17 +27,17 @@
  178. },
  179. // Google Sheets
  180. "aapocclcgogkmnckokdopfmhonfmgoek" : {
  181. - "external_update_url": "https://clients2.google.com/service/update2/crx",
  182. + "external_update_url": "trk:03:https://clients2.google.com/service/update2/crx",
  183. "web_app_migration_flag": "MigrateDefaultChromeAppToWebAppsGSuite"
  184. },
  185. // Google Slides
  186. "felcaaldnbdncclmgdcncolpebgiejap" : {
  187. - "external_update_url": "https://clients2.google.com/service/update2/crx",
  188. + "external_update_url": "trk:04:https://clients2.google.com/service/update2/crx",
  189. "web_app_migration_flag": "MigrateDefaultChromeAppToWebAppsGSuite"
  190. },
  191. // Drive extension
  192. "ghbmnnjooekpmoecnnnilnnbdlolhkhi" : {
  193. - "external_update_url": "https://clients2.google.com/service/update2/crx"
  194. + "external_update_url": "trk:04:https://clients2.google.com/service/update2/crx"
  195. }
  196. }
  197. --- a/chrome/browser/safe_browsing/download_protection/download_feedback.cc
  198. +++ b/chrome/browser/safe_browsing/download_protection/download_feedback.cc
  199. @@ -200,7 +200,7 @@ const int64_t DownloadFeedback::kMaxUplo
  200. // static
  201. const char DownloadFeedback::kSbFeedbackURL[] =
  202. - "https://safebrowsing.google.com/safebrowsing/uploads/chrome";
  203. + "trk:164:https://safebrowsing.google.com/safebrowsing/uploads/chrome";
  204. // static
  205. DownloadFeedbackFactory* DownloadFeedback::factory_ = nullptr;
  206. --- a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
  207. +++ b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
  208. @@ -278,7 +278,7 @@ GURL SpellcheckHunspellDictionary::GetDi
  209. DCHECK(!bdict_file.empty());
  210. static const char kDownloadServerUrl[] =
  211. - "https://redirector.gvt1.com/edgedl/chrome/dict/";
  212. + "trk:173:https://redirector.gvt1.com/edgedl/chrome/dict/";
  213. return GURL(std::string(kDownloadServerUrl) +
  214. base::ToLowerASCII(bdict_file));
  215. --- a/chrome/browser/supervised_user/supervised_user_service.cc
  216. +++ b/chrome/browser/supervised_user/supervised_user_service.cc
  217. @@ -85,7 +85,7 @@ namespace {
  218. // The URL from which to download a host denylist if no local one exists yet.
  219. const char kDenylistURL[] =
  220. - "https://www.gstatic.com/chrome/supervised_user/blacklist-20141001-1k.bin";
  221. + "trk:272:https://www.gstatic.com/chrome/supervised_user/blacklist-20141001-1k.bin";
  222. // The filename under which we'll store the denylist (in the user data dir).
  223. const char kDenylistFilename[] = "su-blacklist.bin";
  224. --- a/chrome/browser/tracing/crash_service_uploader.cc
  225. +++ b/chrome/browser/tracing/crash_service_uploader.cc
  226. @@ -41,7 +41,7 @@ using std::string;
  227. namespace {
  228. -const char kUploadURL[] = "https://clients2.google.com/cr/report";
  229. +const char kUploadURL[] = "trk:109:https://clients2.google.com/cr/report";
  230. const char kCrashUploadContentType[] = "multipart/form-data";
  231. const char kCrashMultipartBoundary[] =
  232. "----**--yradnuoBgoLtrapitluMklaTelgooG--**----";
  233. --- a/chrome/browser/ui/views/outdated_upgrade_bubble_view.cc
  234. +++ b/chrome/browser/ui/views/outdated_upgrade_bubble_view.cc
  235. @@ -37,7 +37,7 @@ namespace {
  236. // The URL to be used to re-install Chrome when auto-update failed for too long.
  237. constexpr char kDownloadChromeUrl[] =
  238. - "https://www.google.com/chrome/?&brand=CHWL"
  239. + "trk:242:https://www.google.com/chrome/?&brand=CHWL"
  240. "&utm_campaign=en&utm_source=en-et-na-us-chrome-bubble&utm_medium=et";
  241. // The maximum number of ignored bubble we track in the NumLaterPerReinstall
  242. --- a/chrome/browser/ui/webui/ntp/ntp_resource_cache.cc
  243. +++ b/chrome/browser/ui/webui/ntp/ntp_resource_cache.cc
  244. @@ -81,22 +81,22 @@ namespace {
  245. // The URL for the the Learn More page shown on incognito new tab.
  246. const char kLearnMoreIncognitoUrl[] =
  247. #if BUILDFLAG(IS_CHROMEOS_ASH)
  248. - "https://support.google.com/chromebook/?p=incognito";
  249. + "trk:246:https://support.google.com/chromebook/?p=incognito";
  250. #else
  251. - "https://support.google.com/chrome/?p=incognito";
  252. + "trk:247:https://support.google.com/chrome/?p=incognito";
  253. #endif
  254. // The URL for the Learn More page shown on guest session new tab.
  255. const char kLearnMoreGuestSessionUrl[] =
  256. #if BUILDFLAG(IS_CHROMEOS_ASH)
  257. - "https://support.google.com/chromebook/?p=chromebook_guest";
  258. + "trk:248:https://support.google.com/chromebook/?p=chromebook_guest";
  259. #else
  260. - "https://support.google.com/chrome/?p=ui_guest";
  261. + "trk:261:https://support.google.com/chrome/?p=ui_guest";
  262. #endif
  263. // The URL for the Learn More page shown on ephermal guest session new tab.
  264. const char kLearnMoreEphemeralGuestSessionUrl[] =
  265. - "https://support.google.com/chrome/?p=ui_guest";
  266. + "trk:261:https://support.google.com/chrome/?p=ui_guest";
  267. SkColor GetThemeColor(const ui::ThemeProvider& tp, int id) {
  268. SkColor color = tp.GetColor(id);
  269. --- a/chrome/chrome_cleaner/components/recovery_component.cc
  270. +++ b/chrome/chrome_cleaner/components/recovery_component.cc
  271. @@ -37,7 +37,7 @@ namespace chrome_cleaner {
  272. namespace {
  273. const char kComponentDownloadUrl[] =
  274. - "https://clients2.google.com/service/update2/crx?response=redirect&os=win"
  275. + "trk:108:https://clients2.google.com/service/update2/crx?response=redirect&os=win"
  276. "&installsource=swreporter&x=id%3Dnpdjjkjlcidkjlamlmmdelcjbcpdjocm"
  277. "%26v%3D0.0.0.0%26uc&acceptformat=crx3";
  278. --- a/chrome/chrome_cleaner/crash/crashpad_crash_reporter.cc
  279. +++ b/chrome/chrome_cleaner/crash/crashpad_crash_reporter.cc
  280. @@ -28,7 +28,7 @@
  281. namespace {
  282. // The URL where crash reports are uploaded.
  283. -const char kReportUploadURL[] = "https://clients2.google.com/cr/report";
  284. +const char kReportUploadURL[] = "trk:302:https://clients2.google.com/cr/report";
  285. // Whether the current process is connected to a crash handler process.
  286. bool g_is_connected_to_crash_handler = false;
  287. --- a/chrome/common/extensions/chrome_extensions_client.cc
  288. +++ b/chrome/common/extensions/chrome_extensions_client.cc
  289. @@ -44,9 +44,9 @@ namespace {
  290. // TODO(battre): Delete the HTTP URL once the blocklist is downloaded via HTTPS.
  291. const char kExtensionBlocklistUrlPrefix[] =
  292. - "http://www.gstatic.com/chrome/extensions/blocklist";
  293. + "trk:269:http://www.gstatic.com/chrome/extensions/blocklist";
  294. const char kExtensionBlocklistHttpsUrlPrefix[] =
  295. - "https://www.gstatic.com/chrome/extensions/blocklist";
  296. + "trk:270:https://www.gstatic.com/chrome/extensions/blocklist";
  297. const char kThumbsWhiteListedExtension[] = "khopmbdjffemhegeeobelklnbglcdgfh";
  298. --- a/chrome/installer/setup/google_chrome_behaviors.cc
  299. +++ b/chrome/installer/setup/google_chrome_behaviors.cc
  300. @@ -37,7 +37,7 @@ namespace installer {
  301. namespace {
  302. constexpr base::StringPiece16 kUninstallSurveyUrl(
  303. - L"https://support.google.com/chrome?p=chrome_uninstall_survey");
  304. + L"trk:253:https://support.google.com/chrome?p=chrome_uninstall_survey");
  305. bool NavigateToUrlWithEdge(const base::string16& url) {
  306. base::string16 protocol_url = L"microsoft-edge:" + url;
  307. --- a/chromecast/browser/service/cast_service_simple.cc
  308. +++ b/chromecast/browser/service/cast_service_simple.cc
  309. @@ -27,7 +27,7 @@ GURL GetStartupURL() {
  310. const base::CommandLine::StringVector& args = command_line->GetArgs();
  311. if (args.empty())
  312. - return GURL("http://www.google.com/");
  313. + return GURL("trk:255:http://www.google.com/");
  314. GURL url(args[0]);
  315. if (url.is_valid() && url.has_scheme())
  316. --- a/chromecast/crash/linux/minidump_uploader.cc
  317. +++ b/chromecast/crash/linux/minidump_uploader.cc
  318. @@ -40,7 +40,7 @@ namespace {
  319. const char kProductName[] = "Eureka";
  320. -const char kCrashServerProduction[] = "https://clients2.google.com/cr/report";
  321. +const char kCrashServerProduction[] = "trk:305:https://clients2.google.com/cr/report";
  322. const char kVirtualChannel[] = "virtual-channel";
  323. --- a/chromeos/geolocation/simple_geolocation_provider.cc
  324. +++ b/chromeos/geolocation/simple_geolocation_provider.cc
  325. @@ -20,7 +20,7 @@ namespace chromeos {
  326. namespace {
  327. const char kDefaultGeolocationProviderUrl[] =
  328. - "https://www.googleapis.com/geolocation/v1/geolocate?";
  329. + "trk:215:https://www.googleapis.com/geolocation/v1/geolocate?";
  330. } // namespace
  331. --- a/components/cloud_devices/common/cloud_devices_urls.cc
  332. +++ b/components/cloud_devices/common/cloud_devices_urls.cc
  333. @@ -14,14 +14,14 @@
  334. namespace cloud_devices {
  335. const char kCloudPrintAuthScope[] =
  336. - "https://www.googleapis.com/auth/cloudprint";
  337. + "trk:197:https://www.googleapis.com/auth/cloudprint";
  338. namespace {
  339. // Url must not be matched by "urls" section of
  340. // cloud_print_app/manifest.json. If it's matched, print driver dialog will
  341. // open sign-in page in separate window.
  342. -const char kCloudPrintURL[] = "https://www.google.com/cloudprint";
  343. +const char kCloudPrintURL[] = "trk:201:https://www.google.com/cloudprint";
  344. }
  345. --- a/components/drive/service/drive_api_service.cc
  346. +++ b/components/drive/service/drive_api_service.cc
  347. @@ -75,9 +75,9 @@ namespace drive {
  348. namespace {
  349. // OAuth2 scopes for Drive API.
  350. -const char kDriveScope[] = "https://www.googleapis.com/auth/drive";
  351. +const char kDriveScope[] = "trk:217:https://www.googleapis.com/auth/drive";
  352. const char kDriveAppsReadonlyScope[] =
  353. - "https://www.googleapis.com/auth/drive.apps.readonly";
  354. + "trk:218:https://www.googleapis.com/auth/drive.apps.readonly";
  355. const char kDriveAppsScope[] = "https://www.googleapis.com/auth/drive.apps";
  356. // Mime type to create a directory.
  357. --- a/components/feedback/feedback_uploader.cc
  358. +++ b/components/feedback/feedback_uploader.cc
  359. @@ -25,7 +25,7 @@ constexpr base::FilePath::CharType kFeed
  360. FILE_PATH_LITERAL("Feedback Reports");
  361. constexpr char kFeedbackPostUrl[] =
  362. - "https://www.google.com/tools/feedback/chrome/__submit";
  363. + "trk:232:https://www.google.com/tools/feedback/chrome/__submit";
  364. constexpr char kProtoBufMimeType[] = "application/x-protobuf";
  365. --- a/components/gcm_driver/gcm_account_tracker.cc
  366. +++ b/components/gcm_driver/gcm_account_tracker.cc
  367. @@ -27,9 +27,9 @@ namespace gcm {
  368. namespace {
  369. // Scopes needed by the OAuth2 access tokens.
  370. -const char kGCMGroupServerScope[] = "https://www.googleapis.com/auth/gcm";
  371. +const char kGCMGroupServerScope[] = "trk:230:https://www.googleapis.com/auth/gcm";
  372. const char kGCMCheckinServerScope[] =
  373. - "https://www.googleapis.com/auth/android_checkin";
  374. + "trk:231:https://www.googleapis.com/auth/android_checkin";
  375. // Name of the GCM account tracker for fetching access tokens.
  376. const char kGCMAccountTrackerName[] = "gcm_account_tracker";
  377. // Minimum token validity when sending to GCM groups server.
  378. --- a/components/google/core/common/google_util.cc
  379. +++ b/components/google/core/common/google_util.cc
  380. @@ -140,7 +140,7 @@ bool IsGoogleSearchSubdomainUrl(const GU
  381. // Global functions -----------------------------------------------------------
  382. -const char kGoogleHomepageURL[] = "https://www.google.com/";
  383. +const char kGoogleHomepageURL[] = "trk:113:https://www.google.com/";
  384. bool HasGoogleSearchQueryParam(base::StringPiece str) {
  385. url::Component query(0, static_cast<int>(str.length())), key, value;
  386. --- a/components/history/core/browser/web_history_service.cc
  387. +++ b/components/history/core/browser/web_history_service.cc
  388. @@ -41,13 +41,13 @@ namespace history {
  389. namespace {
  390. const char kHistoryOAuthScope[] =
  391. - "https://www.googleapis.com/auth/chromesync";
  392. + "trk:138:https://www.googleapis.com/auth/chromesync";
  393. const char kHistoryQueryHistoryUrl[] =
  394. - "https://history.google.com/history/api/lookup?client=chrome";
  395. + "trk:139:https://history.google.com/history/api/lookup?client=chrome";
  396. const char kHistoryDeleteHistoryUrl[] =
  397. - "https://history.google.com/history/api/delete?client=chrome";
  398. + "trk:140:https://history.google.com/history/api/delete?client=chrome";
  399. const char kHistoryAudioHistoryUrl[] =
  400. "https://history.google.com/history/api/lookup?client=audio";
  401. --- a/components/metrics/url_constants.cc
  402. +++ b/components/metrics/url_constants.cc
  403. @@ -7,7 +7,7 @@
  404. namespace metrics {
  405. const char kNewMetricsServerUrl[] =
  406. - "https://clientservices.googleapis.com/uma/v2";
  407. + "trk:265:https://clientservices.googleapis.com/uma/v2";
  408. const char kNewMetricsServerUrlInsecure[] =
  409. "http://clientservices.googleapis.com/uma/v2";
  410. --- a/components/password_manager/core/browser/password_store.cc
  411. +++ b/components/password_manager/core/browser/password_store.cc
  412. @@ -298,10 +298,10 @@ void PasswordStore::GetLogins(const Form
  413. // TODO(mdm): actually delete them at some point, say M24 or so.
  414. base::Time cutoff; // the null time
  415. if (form.scheme == PasswordForm::Scheme::kHtml &&
  416. - (form.signon_realm == "http://www.google.com" ||
  417. - form.signon_realm == "http://www.google.com/" ||
  418. - form.signon_realm == "https://www.google.com" ||
  419. - form.signon_realm == "https://www.google.com/")) {
  420. + (form.signon_realm == "trk:187:http://www.google.com" ||
  421. + form.signon_realm == "trk:188:http://www.google.com/" ||
  422. + form.signon_realm == "trk:189:https://www.google.com" ||
  423. + form.signon_realm == "trk:190:https://www.google.com/")) {
  424. static const base::Time::Exploded exploded_cutoff = {
  425. 2012, 1, 0, 1, 0, 0, 0, 0}; // 00:00 Jan 1 2012
  426. base::Time out_time;
  427. --- a/components/rappor/rappor_service_impl.cc
  428. +++ b/components/rappor/rappor_service_impl.cc
  429. @@ -32,7 +32,7 @@ const char kMimeType[] = "application/vn
  430. const char kRapporDailyEventHistogram[] = "Rappor.DailyEvent.IntervalType";
  431. // The rappor server's URL.
  432. -const char kDefaultServerUrl[] = "https://clients4.google.com/rappor";
  433. +const char kDefaultServerUrl[] = "trk:266:https://clients4.google.com/rappor";
  434. } // namespace
  435. --- a/components/safe_browsing/content/browser/client_side_detection_service.cc
  436. +++ b/components/safe_browsing/content/browser/client_side_detection_service.cc
  437. @@ -53,7 +53,7 @@ const int ClientSideDetectionService::kN
  438. const int ClientSideDetectionService::kPositiveCacheIntervalMinutes = 30;
  439. const char ClientSideDetectionService::kClientReportPhishingUrl[] =
  440. - "https://sb-ssl.google.com/safebrowsing/clientreport/phishing";
  441. + "trk:148:https://sb-ssl.google.com/safebrowsing/clientreport/phishing";
  442. struct ClientSideDetectionService::ClientPhishingReportInfo {
  443. std::unique_ptr<network::SimpleURLLoader> loader;
  444. --- a/components/safe_search_api/safe_search/safe_search_url_checker_client.cc
  445. +++ b/components/safe_search_api/safe_search/safe_search_url_checker_client.cc
  446. @@ -29,7 +29,7 @@ namespace safe_search_api {
  447. namespace {
  448. const char kSafeSearchApiUrl[] =
  449. - "https://safesearch.googleapis.com/v1:classify";
  450. + "trk:238:https://safesearch.googleapis.com/v1:classify";
  451. const char kDataContentType[] = "application/x-www-form-urlencoded";
  452. const char kDataFormat[] = "key=%s&urls=%s";
  453. --- a/components/safe_search_api/stub_url_checker.cc
  454. +++ b/components/safe_search_api/stub_url_checker.cc
  455. @@ -20,7 +20,7 @@ namespace safe_search_api {
  456. namespace {
  457. constexpr char kSafeSearchApiUrl[] =
  458. - "https://safesearch.googleapis.com/v1:classify";
  459. + "trk:238:https://safesearch.googleapis.com/v1:classify";
  460. std::string BuildResponse(bool is_porn) {
  461. base::DictionaryValue dict;
  462. --- a/components/translate/core/browser/translate_url_fetcher.cc
  463. +++ b/components/translate/core/browser/translate_url_fetcher.cc
  464. @@ -99,6 +99,7 @@ bool TranslateURLFetcher::Request(const
  465. if (!extra_request_header_.empty())
  466. resource_request->headers.AddHeaderFromString(extra_request_header_);
  467. + fprintf(stderr, "translator: fetching something from %s\n", url_.spec().c_str());
  468. simple_loader_ =
  469. variations::CreateSimpleURLLoaderWithVariationsHeaderUnknownSignedIn(
  470. std::move(resource_request),
  471. --- a/components/translate/core/common/translate_util.cc
  472. +++ b/components/translate/core/common/translate_util.cc
  473. @@ -20,7 +20,7 @@ const char kDetectLanguageInSubFrames[]
  474. } // namespace
  475. -const char kSecurityOrigin[] = "https://translate.googleapis.com/";
  476. +const char kSecurityOrigin[] = "trk:220:https://translate.googleapis.com/";
  477. const base::Feature kTranslateSubFrames{"TranslateSubFrames",
  478. base::FEATURE_DISABLED_BY_DEFAULT};
  479. --- a/components/variations/variations_url_constants.cc
  480. +++ b/components/variations/variations_url_constants.cc
  481. @@ -8,7 +8,7 @@ namespace variations {
  482. // Default server of Variations seed info.
  483. const char kDefaultServerUrl[] =
  484. - "https://clientservices.googleapis.com/chrome-variations/seed";
  485. + "trk:142:https://clientservices.googleapis.com/chrome-variations/seed";
  486. const char kDefaultInsecureServerUrl[] =
  487. "http://clientservices.googleapis.com/chrome-variations/seed";
  488. --- a/content/browser/speech/speech_recognition_engine.cc
  489. +++ b/content/browser/speech/speech_recognition_engine.cc
  490. @@ -30,7 +30,7 @@ namespace content {
  491. namespace {
  492. const char kWebServiceBaseUrl[] =
  493. - "https://www.google.com/speech-api/full-duplex/v1";
  494. + "trk:184:https://www.google.com/speech-api/full-duplex/v1";
  495. const char kDownstreamUrl[] = "/down?";
  496. const char kUpstreamUrl[] = "/up?";
  497. --- a/content/browser/webauth/authenticator_common.cc
  498. +++ b/content/browser/webauth/authenticator_common.cc
  499. @@ -167,9 +167,9 @@ base::Optional<std::string> ProcessAppId
  500. // special-case AppIDs. Firefox also does this:
  501. // https://groups.google.com/forum/#!msg/mozilla.dev.platform/Uiu3fwnA2xw/201ynAiPAQAJ
  502. const GURL kGstatic1 =
  503. - GURL("https://www.gstatic.com/securitykey/origins.json");
  504. + GURL("trk:276:https://www.gstatic.com/securitykey/origins.json");
  505. const GURL kGstatic2 =
  506. - GURL("https://www.gstatic.com/securitykey/a/google.com/origins.json");
  507. + GURL("trk:277:https://www.gstatic.com/securitykey/a/google.com/origins.json");
  508. DCHECK(kGstatic1.is_valid() && kGstatic2.is_valid());
  509. if (origin.DomainIs("google.com") && !appid_url.has_ref() &&
  510. --- a/content/shell/browser/shell_browser_main_parts.cc
  511. +++ b/content/shell/browser/shell_browser_main_parts.cc
  512. @@ -88,7 +88,7 @@ GURL GetStartupURL() {
  513. #else
  514. const base::CommandLine::StringVector& args = command_line->GetArgs();
  515. if (args.empty())
  516. - return GURL("https://www.google.com/");
  517. + return GURL("trk:183:https://www.google.com/");
  518. GURL url(args[0]);
  519. if (url.is_valid() && url.has_scheme())
  520. --- a/extensions/common/extension_urls.cc
  521. +++ b/extensions/common/extension_urls.cc
  522. @@ -26,9 +26,9 @@ bool IsSourceFromAnExtension(const base:
  523. namespace extension_urls {
  524. -const char kChromeWebstoreBaseURL[] = "https://chrome.google.com/webstore";
  525. +const char kChromeWebstoreBaseURL[] = "trk:09:https://chrome.google.com/webstore";
  526. const char kChromeWebstoreUpdateURL[] =
  527. - "https://clients2.google.com/service/update2/crx";
  528. + "trk:05:https://clients2.google.com/service/update2/crx";
  529. GURL GetWebstoreLaunchURL() {
  530. extensions::ExtensionsClient* client = extensions::ExtensionsClient::Get();
  531. --- a/google_apis/gaia/gaia_constants.cc
  532. +++ b/google_apis/gaia/gaia_constants.cc
  533. @@ -25,23 +25,23 @@ const char kSyncService[] = "chromiumsyn
  534. const char kRemotingService[] = "chromoting";
  535. // OAuth scopes.
  536. -const char kOAuth1LoginScope[] = "https://www.google.com/accounts/OAuthLogin";
  537. +const char kOAuth1LoginScope[] = "trk:181:https://www.google.com/accounts/OAuthLogin";
  538. const char kOAuthWrapBridgeUserInfoScope[] =
  539. - "https://www.googleapis.com/auth/userinfo.email";
  540. + "trk:101:https://www.googleapis.com/auth/userinfo.email";
  541. // Service/scope names for device management (cloud-based policy) server.
  542. const char kDeviceManagementServiceOAuth[] =
  543. - "https://www.googleapis.com/auth/chromeosdevicemanagement";
  544. + "trk:102:https://www.googleapis.com/auth/chromeosdevicemanagement";
  545. // OAuth2 scope for access to all Google APIs.
  546. -const char kAnyApiOAuth2Scope[] = "https://www.googleapis.com/auth/any-api";
  547. +const char kAnyApiOAuth2Scope[] = "trk:103:https://www.googleapis.com/auth/any-api";
  548. // OAuth2 scope for access to Chrome sync APIs
  549. const char kChromeSyncOAuth2Scope[] =
  550. - "https://www.googleapis.com/auth/chromesync";
  551. + "trk:104:https://www.googleapis.com/auth/chromesync";
  552. // OAuth2 scope for access to the Chrome Sync APIs for managed profiles.
  553. const char kChromeSyncSupervisedOAuth2Scope[] =
  554. - "https://www.googleapis.com/auth/chromesync_playpen";
  555. + "trk:105:https://www.googleapis.com/auth/chromesync_playpen";
  556. // OAuth2 scope for access to Kid Management API.
  557. const char kKidManagementOAuth2Scope[] =
  558. @@ -53,16 +53,16 @@ const char kKidManagementPrivilegedOAuth
  559. // OAuth2 scope for access to Google Family Link Supervision Setup.
  560. const char kKidsSupervisionSetupChildOAuth2Scope[] =
  561. - "https://www.googleapis.com/auth/kids.supervision.setup.child";
  562. + "trk:262:https://www.googleapis.com/auth/kids.supervision.setup.child";
  563. // OAuth2 scope for access to Google Talk APIs (XMPP).
  564. const char kGoogleTalkOAuth2Scope[] =
  565. - "https://www.googleapis.com/auth/googletalk";
  566. + "trk:106:https://www.googleapis.com/auth/googletalk";
  567. const char kGoogleUserInfoEmail[] =
  568. - "https://www.googleapis.com/auth/userinfo.email";
  569. + "trk:107:https://www.googleapis.com/auth/userinfo.email";
  570. const char kGoogleUserInfoProfile[] =
  571. - "https://www.googleapis.com/auth/userinfo.profile";
  572. + "trk:260:https://www.googleapis.com/auth/userinfo.profile";
  573. // OAuth scope for access to the people API (read-only).
  574. const char kPeopleApiReadOnlyOAuth2Scope[] =
  575. --- a/google_apis/gaia/gaia_urls.cc
  576. +++ b/google_apis/gaia/gaia_urls.cc
  577. @@ -23,6 +23,7 @@
  578. namespace {
  579. // Gaia service constants
  580. +//adding trk: here currently crashes the program
  581. const char kDefaultGoogleUrl[] = "http://google.com";
  582. const char kDefaultGaiaUrl[] = "https://accounts.google.com";
  583. const char kDefaultGoogleApisBaseUrl[] = "https://www.googleapis.com";
  584. --- a/google_apis/gcm/engine/gservices_settings.cc
  585. +++ b/google_apis/gcm/engine/gservices_settings.cc
  586. @@ -30,18 +30,18 @@ const char kRegistrationURLKey[] = "gcm_
  587. const int64_t kDefaultCheckinInterval = 2 * 24 * 60 * 60; // seconds = 2 days.
  588. const int64_t kMinimumCheckinInterval = 12 * 60 * 60; // seconds = 12 hours.
  589. -const char kDefaultCheckinURL[] = "https://android.clients.google.com/checkin";
  590. +const char kDefaultCheckinURL[] = "trk:110:https://android.clients.google.com/checkin";
  591. const char kDefaultMCSHostname[] = "mtalk.google.com";
  592. const int kDefaultMCSMainSecurePort = 5228;
  593. const int kDefaultMCSFallbackSecurePort = 443;
  594. const char kDefaultRegistrationURL[] =
  595. - "https://android.clients.google.com/c2dm/register3";
  596. + "trk:111:https://android.clients.google.com/c2dm/register3";
  597. // Settings that are to be deleted are marked with this prefix in checkin
  598. // response.
  599. const char kDeleteSettingPrefix[] = "delete_";
  600. // Settings digest starts with verison number followed by '-'.
  601. const char kDigestVersionPrefix[] = "1-";
  602. -const char kMCSEnpointTemplate[] = "https://%s:%d";
  603. +const char kMCSEnpointTemplate[] = "trk:112:https://%s:%d";
  604. const int kMaxSecurePort = 65535;
  605. std::string MakeMCSEndpoint(const std::string& mcs_hostname, int port) {
  606. --- a/jingle/notifier/base/gaia_token_pre_xmpp_auth.cc
  607. +++ b/jingle/notifier/base/gaia_token_pre_xmpp_auth.cc
  608. @@ -33,7 +33,7 @@ class GaiaCookieMechanism : public jingl
  609. // These attributes are necessary for working with non-gmail gaia
  610. // accounts.
  611. const std::string NS_GOOGLE_AUTH_PROTOCOL(
  612. - "http://www.google.com/talk/protocol/auth");
  613. + "trk:179:http://www.google.com/talk/protocol/auth");
  614. const jingle_xmpp::QName QN_GOOGLE_ALLOW_GENERATED_JID_XMPP_LOGIN(
  615. NS_GOOGLE_AUTH_PROTOCOL, "allow-generated-jid");
  616. const jingle_xmpp::QName QN_GOOGLE_AUTH_CLIENT_USES_FULL_BIND_RESULT(
  617. --- a/remoting/base/breakpad_mac.mm
  618. +++ b/remoting/base/breakpad_mac.mm
  619. @@ -52,7 +52,7 @@ void InitializeCrashReporting() {
  620. [breakpad_config setObject:@"21600" forKey:@BREAKPAD_REPORT_INTERVAL];
  621. }
  622. if (![breakpad_config objectForKey:@BREAKPAD_URL]) {
  623. - [breakpad_config setObject:@"https://clients2.google.com/cr/report"
  624. + [breakpad_config setObject:@"trk:310:https://clients2.google.com/cr/report"
  625. forKey:@BREAKPAD_URL];
  626. }
  627. --- a/remoting/protocol/jingle_messages.cc
  628. +++ b/remoting/protocol/jingle_messages.cc
  629. @@ -25,7 +25,7 @@ const char kJabberNamespace[] = "jabber:
  630. const char kJingleNamespace[] = "urn:xmpp:jingle:1";
  631. // Namespace for transport messages when using standard ICE.
  632. -const char kIceTransportNamespace[] = "google:remoting:ice";
  633. +const char kIceTransportNamespace[] = "trk:100:google:remoting:ice";
  634. const char kWebrtcTransportNamespace[] = "google:remoting:webrtc";
  635. --- a/rlz/lib/lib_values.cc
  636. +++ b/rlz/lib/lib_values.cc
  637. @@ -41,7 +41,7 @@ const char kSetDccResponseVariable[] = "
  638. //
  639. const char kFinancialPingPath[] = "/tools/pso/ping";
  640. -const char kFinancialServer[] = "clients1.google.com";
  641. +const char kFinancialServer[] = "trk:443:clients1.google.com"; /* not using URLRequest! catch with cache.ir */
  642. const int kFinancialPort = 443;
  643. // Ping times in 100-nanosecond intervals.
  644. --- a/third_party/libjingle_xmpp/xmpp/constants.cc
  645. +++ b/third_party/libjingle_xmpp/xmpp/constants.cc
  646. @@ -194,7 +194,7 @@ const StaticQName QN_SASL_TEMPORARY_AUTH
  647. // These are non-standard.
  648. const char NS_GOOGLE_AUTH_PROTOCOL[] =
  649. - "http://www.google.com/talk/protocol/auth";
  650. + "trk:236:http://www.google.com/talk/protocol/auth";
  651. const StaticQName QN_GOOGLE_AUTH_CLIENT_USES_FULL_BIND_RESULT =
  652. { NS_GOOGLE_AUTH_PROTOCOL, "client-uses-full-bind-result" };
  653. const StaticQName QN_GOOGLE_ALLOW_NON_GOOGLE_ID_XMPP_LOGIN =
  654. @@ -338,7 +338,7 @@ const char STR_SHOW_DND[] = "dnd";
  655. const char STR_SHOW_XA[] = "xa";
  656. const char STR_SHOW_OFFLINE[] = "offline";
  657. -const char NS_GOOGLE_PSTN_CONFERENCE[] = "http://www.google.com/pstn-conference";
  658. +const char NS_GOOGLE_PSTN_CONFERENCE[] = "trk:237:http://www.google.com/pstn-conference";
  659. const StaticQName QN_GOOGLE_PSTN_CONFERENCE_STATUS = { NS_GOOGLE_PSTN_CONFERENCE, "status" };
  660. const StaticQName QN_ATTR_STATUS = { STR_EMPTY, "status" };
  661. @@ -433,7 +433,7 @@ const StaticQName QN_MUC_ROLE = { NS_MUC
  662. const char STR_AFFILIATION_NONE[] = "none";
  663. const char STR_ROLE_PARTICIPANT[] = "participant";
  664. -const char NS_GOOGLE_SESSION[] = "http://www.google.com/session";
  665. +const char NS_GOOGLE_SESSION[] = "trk:238:http://www.google.com/session";
  666. const StaticQName QN_GOOGLE_CIRCLE_ID = { STR_EMPTY, "google-circle-id" };
  667. const StaticQName QN_GOOGLE_USER_ID = { STR_EMPTY, "google-user-id" };
  668. const StaticQName QN_GOOGLE_SESSION_BLOCKED = { NS_GOOGLE_SESSION, "blocked" };
  669. --- a/ui/accessibility/extensions/chromevoxclassic/chromevox/background/prefs.js
  670. +++ b/ui/accessibility/extensions/chromevoxclassic/chromevox/background/prefs.js
  671. @@ -72,9 +72,9 @@ cvox.ChromeVoxPrefs.DEFAULT_PREFS = {
  672. 'outputContextFirst': false,
  673. 'position': '{}',
  674. 'siteSpecificScriptBase':
  675. - 'https://ssl.gstatic.com/accessibility/javascript/ext/',
  676. + 'trk:242:https://ssl.gstatic.com/accessibility/javascript/ext/',
  677. 'siteSpecificScriptLoader':
  678. - 'https://ssl.gstatic.com/accessibility/javascript/ext/loader.js',
  679. + 'trk:243:https://ssl.gstatic.com/accessibility/javascript/ext/loader.js',
  680. 'sticky': false,
  681. 'typingEcho': 0,
  682. 'useIBeamCursor': cvox.ChromeVox.isMac,
  683. --- a/ui/accessibility/extensions/chromevoxclassic/host/chrome/host.js
  684. +++ b/ui/accessibility/extensions/chromevoxclassic/host/chrome/host.js
  685. @@ -96,9 +96,9 @@ cvox.ChromeHost.prototype.init = functio
  686. (!cvox.ApiImplementation.siteSpecificScriptLoader ||
  687. !cvox.ApiImplementation.siteSpecificScriptBase);
  688. cvox.ApiImplementation.siteSpecificScriptLoader =
  689. - 'https://ssl.gstatic.com/accessibility/javascript/ext/loader.js';
  690. + 'trk:244:https://ssl.gstatic.com/accessibility/javascript/ext/loader.js';
  691. cvox.ApiImplementation.siteSpecificScriptBase =
  692. - 'https://ssl.gstatic.com/accessibility/javascript/ext/';
  693. + 'trk:245:https://ssl.gstatic.com/accessibility/javascript/ext/';
  694. if (apiPrefsChanged) {
  695. var searchInit = prefs['siteSpecificEnhancements'] === 'true' ?
  696. cvox.SearchLoader.init :
  697. --- a/ui/views/examples/webview_example.cc
  698. +++ b/ui/views/examples/webview_example.cc
  699. @@ -29,7 +29,7 @@ void WebViewExample::CreateExampleView(V
  700. webview_->GetWebContents()->SetDelegate(this);
  701. container->SetLayoutManager(std::make_unique<FillLayout>());
  702. - webview_->LoadInitialURL(GURL("http://www.google.com/"));
  703. + webview_->LoadInitialURL(GURL("trk:174:http://www.google.com/"));
  704. webview_->GetWebContents()->Focus();
  705. }