Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(163)

Side by Side Diff: components/network_time/network_time_tracker.cc

Issue 2448943004: Add experimental feature info to certificate reports (Closed)
Patch Set: cleanup Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/network_time/network_time_tracker.h" 5 #include "components/network_time/network_time_tracker.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 time_mapping.SetDouble(kPrefTime, time_at_last_measurement_.ToJsTime()); 281 time_mapping.SetDouble(kPrefTime, time_at_last_measurement_.ToJsTime());
282 time_mapping.SetDouble(kPrefTicks, static_cast<double>( 282 time_mapping.SetDouble(kPrefTicks, static_cast<double>(
283 ticks_at_last_measurement_.ToInternalValue())); 283 ticks_at_last_measurement_.ToInternalValue()));
284 time_mapping.SetDouble(kPrefUncertainty, static_cast<double>( 284 time_mapping.SetDouble(kPrefUncertainty, static_cast<double>(
285 network_time_uncertainty_.ToInternalValue())); 285 network_time_uncertainty_.ToInternalValue()));
286 time_mapping.SetDouble(kPrefNetworkTime, 286 time_mapping.SetDouble(kPrefNetworkTime,
287 network_time_at_last_measurement_.ToJsTime()); 287 network_time_at_last_measurement_.ToJsTime());
288 pref_service_->Set(prefs::kNetworkTimeMapping, time_mapping); 288 pref_service_->Set(prefs::kNetworkTimeMapping, time_mapping);
289 } 289 }
290 290
291 bool NetworkTimeTracker::AreTimeFetchesEnabled() const {
292 return base::FeatureList::IsEnabled(kNetworkTimeServiceQuerying);
293 }
294
295 NetworkTimeTracker::FetchBehavior NetworkTimeTracker::GetFetchBehavior() const {
296 const std::string param = variations::GetVariationParamValueByFeature(
297 kNetworkTimeServiceQuerying, kVariationsServiceFetchBehavior);
298 if (param == "background-only") {
299 return FETCHES_IN_BACKGROUND_ONLY;
300 } else if (param == "on-demand-only") {
301 return FETCHES_ON_DEMAND_ONLY;
302 } else if (param == "background-and-on-demand") {
303 return FETCHES_IN_BACKGROUND_AND_ON_DEMAND;
304 }
305 return FETCH_BEHAVIOR_UNKNOWN;
306 }
307
291 void NetworkTimeTracker::SetTimeServerURLForTesting(const GURL& url) { 308 void NetworkTimeTracker::SetTimeServerURLForTesting(const GURL& url) {
292 server_url_ = url; 309 server_url_ = url;
293 } 310 }
294 311
295 GURL NetworkTimeTracker::GetTimeServerURLForTesting() const { 312 GURL NetworkTimeTracker::GetTimeServerURLForTesting() const {
296 return server_url_; 313 return server_url_;
297 } 314 }
298 315
299 void NetworkTimeTracker::SetMaxResponseSizeForTesting(size_t limit) { 316 void NetworkTimeTracker::SetMaxResponseSizeForTesting(size_t limit) {
300 max_response_size_ = limit; 317 max_response_size_ = limit;
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 *uncertainty = network_time_uncertainty_ + divergence; 405 *uncertainty = network_time_uncertainty_ + divergence;
389 } 406 }
390 return NETWORK_TIME_AVAILABLE; 407 return NETWORK_TIME_AVAILABLE;
391 } 408 }
392 409
393 bool NetworkTimeTracker::StartTimeFetch(const base::Closure& closure) { 410 bool NetworkTimeTracker::StartTimeFetch(const base::Closure& closure) {
394 DCHECK(thread_checker_.CalledOnValidThread()); 411 DCHECK(thread_checker_.CalledOnValidThread());
395 // Check if the user is opted in to on-demand time fetches. 412 // Check if the user is opted in to on-demand time fetches.
396 const std::string param = variations::GetVariationParamValueByFeature( 413 const std::string param = variations::GetVariationParamValueByFeature(
397 kNetworkTimeServiceQuerying, kVariationsServiceFetchBehavior); 414 kNetworkTimeServiceQuerying, kVariationsServiceFetchBehavior);
398 if (param == "background-only") { 415 if (!AreTimeFetchesEnabled() ||
416 GetFetchBehavior() == FETCHES_IN_BACKGROUND_ONLY) {
399 return false; 417 return false;
400 } 418 }
401 419
402 // Enqueue the callback before calling CheckTime(), so that if 420 // Enqueue the callback before calling CheckTime(), so that if
403 // CheckTime() completes synchronously, the callback gets called. 421 // CheckTime() completes synchronously, the callback gets called.
404 fetch_completion_callbacks_.push_back(closure); 422 fetch_completion_callbacks_.push_back(closure);
405 423
406 // If a time query is already in progress, do not start another one. 424 // If a time query is already in progress, do not start another one.
407 if (time_fetcher_) { 425 if (time_fetcher_) {
408 return true; 426 return true;
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 // because a callback could call StartTimeFetch() to enqueue another 565 // because a callback could call StartTimeFetch() to enqueue another
548 // callback. 566 // callback.
549 std::vector<base::Closure> callbacks = fetch_completion_callbacks_; 567 std::vector<base::Closure> callbacks = fetch_completion_callbacks_;
550 fetch_completion_callbacks_.clear(); 568 fetch_completion_callbacks_.clear();
551 for (const auto& callback : callbacks) { 569 for (const auto& callback : callbacks) {
552 callback.Run(); 570 callback.Run();
553 } 571 }
554 } 572 }
555 573
556 void NetworkTimeTracker::QueueCheckTime(base::TimeDelta delay) { 574 void NetworkTimeTracker::QueueCheckTime(base::TimeDelta delay) {
557 // Check if the user is opted in to background time fetches. 575 if (AreTimeFetchesEnabled() && GetFetchBehavior() != FETCHES_ON_DEMAND_ONLY) {
558 const std::string param = variations::GetVariationParamValueByFeature(
559 kNetworkTimeServiceQuerying, kVariationsServiceFetchBehavior);
560 if (base::FeatureList::IsEnabled(kNetworkTimeServiceQuerying) &&
561 param != "on-demand-only") {
562 timer_.Start(FROM_HERE, delay, this, &NetworkTimeTracker::CheckTime); 576 timer_.Start(FROM_HERE, delay, this, &NetworkTimeTracker::CheckTime);
563 } 577 }
564 } 578 }
565 579
566 bool NetworkTimeTracker::ShouldIssueTimeQuery() { 580 bool NetworkTimeTracker::ShouldIssueTimeQuery() {
567 // Do not query the time service if not enabled via Variations Service. 581 // Do not query the time service if not enabled via Variations Service.
568 if (!base::FeatureList::IsEnabled(kNetworkTimeServiceQuerying)) { 582 if (!AreTimeFetchesEnabled()) {
569 return false; 583 return false;
570 } 584 }
571 585
572 // If GetNetworkTime() does not return NETWORK_TIME_AVAILABLE, 586 // If GetNetworkTime() does not return NETWORK_TIME_AVAILABLE,
573 // synchronization has been lost and a query is needed. 587 // synchronization has been lost and a query is needed.
574 base::Time network_time; 588 base::Time network_time;
575 if (GetNetworkTime(&network_time, nullptr) != NETWORK_TIME_AVAILABLE) { 589 if (GetNetworkTime(&network_time, nullptr) != NETWORK_TIME_AVAILABLE) {
576 return true; 590 return true;
577 } 591 }
578 592
579 // Otherwise, make the decision at random. 593 // Otherwise, make the decision at random.
580 return base::RandDouble() < RandomQueryProbability(); 594 return base::RandDouble() < RandomQueryProbability();
581 } 595 }
582 596
583 } // namespace network_time 597 } // namespace network_time
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698