| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/gcm_driver/features.h" |
| #include "base/metrics/field_trial_param_associator.h" |
| #include "base/metrics/field_trial_params.h" |
| #include "base/strings/string_number_conversions.h" |
| |
| #include <algorithm> |
| #include <map> |
| |
| namespace gcm { |
| |
| namespace features { |
| |
| const base::Feature kInvalidateTokenFeature{"GCMTokenInvalidAfterDays", |
| base::FEATURE_ENABLED_BY_DEFAULT}; |
| const char kParamNameTokenInvalidationPeriodDays[] = |
| "token_invalidation_period"; |
| // A token invalidation period of 0 means the feature is disabled, and the |
| // GCM token never becomes stale. |
| const int kDefaultTokenInvalidationPeriod = 7; |
| |
| base::TimeDelta GetTokenInvalidationInterval() { |
| if (!base::FeatureList::IsEnabled(kInvalidateTokenFeature)) |
| return base::TimeDelta(); |
| std::string override_value = base::GetFieldTrialParamValueByFeature( |
| kInvalidateTokenFeature, kParamNameTokenInvalidationPeriodDays); |
| |
| if (!override_value.empty()) { |
| int override_value_days; |
| if (base::StringToInt(override_value, &override_value_days)) |
| return base::TimeDelta::FromDays(override_value_days); |
| } |
| return base::TimeDelta::FromDays(kDefaultTokenInvalidationPeriod); |
| } |
| |
| } // namespace features |
| |
| } // namespace gcm |