| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/google/core/browser/google_url_tracker.h" | 5 #include "components/google/core/browser/google_url_tracker.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| 11 #include "base/single_thread_task_runner.h" | 11 #include "base/single_thread_task_runner.h" |
| 12 #include "base/strings/string_util.h" | 12 #include "base/strings/string_util.h" |
| 13 #include "base/thread_task_runner_handle.h" | 13 #include "base/thread_task_runner_handle.h" |
| 14 #include "components/data_use_measurement/core/data_use_user_data.h" |
| 14 #include "components/google/core/browser/google_pref_names.h" | 15 #include "components/google/core/browser/google_pref_names.h" |
| 15 #include "components/google/core/browser/google_switches.h" | 16 #include "components/google/core/browser/google_switches.h" |
| 16 #include "components/google/core/browser/google_util.h" | 17 #include "components/google/core/browser/google_util.h" |
| 17 #include "components/pref_registry/pref_registry_syncable.h" | 18 #include "components/pref_registry/pref_registry_syncable.h" |
| 18 #include "net/base/load_flags.h" | 19 #include "net/base/load_flags.h" |
| 19 #include "net/url_request/url_fetcher.h" | 20 #include "net/url_request/url_fetcher.h" |
| 20 #include "net/url_request/url_request_status.h" | 21 #include "net/url_request/url_request_status.h" |
| 21 | 22 |
| 22 | 23 |
| 23 const char GoogleURLTracker::kDefaultGoogleHomepage[] = | 24 const char GoogleURLTracker::kDefaultGoogleHomepage[] = |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 // specified a Google base URL manually, we shouldn't bother to look up any | 157 // specified a Google base URL manually, we shouldn't bother to look up any |
| 157 // alternatives or offer to switch to them. | 158 // alternatives or offer to switch to them. |
| 158 if (!client_->IsBackgroundNetworkingEnabled() || | 159 if (!client_->IsBackgroundNetworkingEnabled() || |
| 159 base::CommandLine::ForCurrentProcess()->HasSwitch( | 160 base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 160 switches::kGoogleBaseURL)) | 161 switches::kGoogleBaseURL)) |
| 161 return; | 162 return; |
| 162 | 163 |
| 163 already_fetched_ = true; | 164 already_fetched_ = true; |
| 164 fetcher_ = net::URLFetcher::Create(fetcher_id_, GURL(kSearchDomainCheckURL), | 165 fetcher_ = net::URLFetcher::Create(fetcher_id_, GURL(kSearchDomainCheckURL), |
| 165 net::URLFetcher::GET, this); | 166 net::URLFetcher::GET, this); |
| 167 data_use_measurement::DataUseUserData::AttachToFetcher( |
| 168 fetcher_.get(), |
| 169 data_use_measurement::DataUseUserData::GOOGLE_URL_TRACKER); |
| 166 ++fetcher_id_; | 170 ++fetcher_id_; |
| 167 // We don't want this fetch to set new entries in the cache or cookies, lest | 171 // We don't want this fetch to set new entries in the cache or cookies, lest |
| 168 // we alarm the user. | 172 // we alarm the user. |
| 169 fetcher_->SetLoadFlags(net::LOAD_DISABLE_CACHE | | 173 fetcher_->SetLoadFlags(net::LOAD_DISABLE_CACHE | |
| 170 net::LOAD_DO_NOT_SAVE_COOKIES); | 174 net::LOAD_DO_NOT_SAVE_COOKIES); |
| 171 fetcher_->SetRequestContext(client_->GetRequestContext()); | 175 fetcher_->SetRequestContext(client_->GetRequestContext()); |
| 172 | 176 |
| 173 // Configure to retry at most kMaxRetries times for 5xx errors. | 177 // Configure to retry at most kMaxRetries times for 5xx errors. |
| 174 static const int kMaxRetries = 5; | 178 static const int kMaxRetries = 5; |
| 175 fetcher_->SetMaxRetriesOn5xx(kMaxRetries); | 179 fetcher_->SetMaxRetriesOn5xx(kMaxRetries); |
| 176 | 180 |
| 177 // Also retry kMaxRetries times on network change errors. A network change can | 181 // Also retry kMaxRetries times on network change errors. A network change can |
| 178 // propagate through Chrome in various stages, so it's possible for this code | 182 // propagate through Chrome in various stages, so it's possible for this code |
| 179 // to be reached via OnNetworkChanged(), and then have the fetch we kick off | 183 // to be reached via OnNetworkChanged(), and then have the fetch we kick off |
| 180 // be canceled due to e.g. the DNS server changing at a later time. In general | 184 // be canceled due to e.g. the DNS server changing at a later time. In general |
| 181 // it's not possible to ensure that by the time we reach here any requests we | 185 // it's not possible to ensure that by the time we reach here any requests we |
| 182 // start won't be canceled in this fashion, so retrying is the best we can do. | 186 // start won't be canceled in this fashion, so retrying is the best we can do. |
| 183 fetcher_->SetAutomaticallyRetryOnNetworkChanges(kMaxRetries); | 187 fetcher_->SetAutomaticallyRetryOnNetworkChanges(kMaxRetries); |
| 184 | 188 |
| 185 fetcher_->Start(); | 189 fetcher_->Start(); |
| 186 } | 190 } |
| OLD | NEW |