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