1 // Copyright 2016 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "components/metrics/net/cellular_logic_helper.h" 6 7 #include "base/metrics/field_trial_params.h" 8 #include "base/time/time.h" 9 #include "build/build_config.h" 10 #include "build/chromeos_buildflags.h" 11 #include "components/metrics/metrics_features.h" 12 #include "net/base/network_change_notifier.h" 13 14 namespace metrics { 15 16 namespace { 17 18 #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) 19 const int kStandardUploadIntervalSeconds = 5 * 60; // Five minutes. 20 #else 21 const int kStandardUploadIntervalSeconds = 30 * 60; // Thirty minutes. 22 #endif 23 24 // This parameter is intended to be used for Structured metrics, which is 25 // currently only enabled on Chrome OS. 26 // 27 // This parameter should not be used for cellular devices. 28 constexpr base::FeatureParam<int> kUmaUploadCadence{ 29 &features::kStructuredMetrics, "uma_upload_cadence", 30 kStandardUploadIntervalSeconds}; 31 32 // Android-only cellular settings. 33 #if BUILDFLAG(IS_ANDROID) 34 const int kStandardUploadIntervalCellularSeconds = 15 * 60; // Fifteen minutes. 35 #endif 36 37 } // namespace 38 GetUploadInterval(bool use_cellular_upload_interval)39base::TimeDelta GetUploadInterval(bool use_cellular_upload_interval) { 40 #if BUILDFLAG(IS_ANDROID) 41 if (use_cellular_upload_interval) { 42 return base::Seconds(kStandardUploadIntervalCellularSeconds); 43 } 44 #endif 45 return base::Seconds(kUmaUploadCadence.Get()); 46 } 47 ShouldUseCellularUploadInterval()48bool ShouldUseCellularUploadInterval() { 49 #if BUILDFLAG(IS_ANDROID) 50 return net::NetworkChangeNotifier::IsConnectionCellular( 51 net::NetworkChangeNotifier::GetConnectionType()); 52 #else 53 return false; 54 #endif 55 } 56 57 } // namespace metrics 58