Index: content/common/origin_trials/trial_token_validator.cc |
diff --git a/content/common/origin_trials/trial_token_validator.cc b/content/common/origin_trials/trial_token_validator.cc |
index bb1c232a6b80e04ea6e35f1f3052ff609514a999..3412ed98bd26e6145f25769484afbb5c423dbdb2 100644 |
--- a/content/common/origin_trials/trial_token_validator.cc |
+++ b/content/common/origin_trials/trial_token_validator.cc |
@@ -21,7 +21,8 @@ namespace content { |
blink::WebOriginTrialTokenStatus TrialTokenValidator::ValidateToken( |
const std::string& token, |
const url::Origin& origin, |
- std::string* feature_name) { |
+ std::string* feature_name, |
+ base::Time current_time) { |
ContentClient* content_client = GetContentClient(); |
const OriginTrialPolicy* origin_trial_policy = |
content_client->GetOriginTrialPolicy(); |
@@ -40,7 +41,7 @@ blink::WebOriginTrialTokenStatus TrialTokenValidator::ValidateToken( |
if (status != blink::WebOriginTrialTokenStatus::kSuccess) |
return status; |
- status = trial_token->IsValid(origin, base::Time::Now()); |
+ status = trial_token->IsValid(origin, current_time); |
if (status != blink::WebOriginTrialTokenStatus::kSuccess) |
return status; |
@@ -54,19 +55,20 @@ blink::WebOriginTrialTokenStatus TrialTokenValidator::ValidateToken( |
return blink::WebOriginTrialTokenStatus::kSuccess; |
} |
-bool TrialTokenValidator::RequestEnablesFeature( |
- const net::URLRequest* request, |
- base::StringPiece feature_name) { |
+bool TrialTokenValidator::RequestEnablesFeature(const net::URLRequest* request, |
+ base::StringPiece feature_name, |
+ base::Time current_time) { |
// TODO(mek): Possibly cache the features that are availble for request in |
// UserData associated with the request. |
return RequestEnablesFeature(request->url(), request->response_headers(), |
- feature_name); |
+ feature_name, current_time); |
} |
bool TrialTokenValidator::RequestEnablesFeature( |
const GURL& request_url, |
const net::HttpResponseHeaders* response_headers, |
- base::StringPiece feature_name) { |
+ base::StringPiece feature_name, |
+ base::Time current_time) { |
if (!base::FeatureList::IsEnabled(features::kOriginTrials)) |
return false; |
@@ -79,7 +81,7 @@ bool TrialTokenValidator::RequestEnablesFeature( |
while (response_headers->EnumerateHeader(&iter, "Origin-Trial", &token)) { |
std::string token_feature; |
// TODO(mek): Log the validation errors to histograms? |
- if (ValidateToken(token, origin, &token_feature) == |
+ if (ValidateToken(token, origin, &token_feature, current_time) == |
blink::WebOriginTrialTokenStatus::kSuccess) |
if (token_feature == feature_name) |
return true; |
@@ -90,7 +92,8 @@ bool TrialTokenValidator::RequestEnablesFeature( |
std::unique_ptr<TrialTokenValidator::FeatureToTokensMap> |
TrialTokenValidator::GetValidTokensFromHeaders( |
const url::Origin& origin, |
- const net::HttpResponseHeaders* headers) { |
+ const net::HttpResponseHeaders* headers, |
+ base::Time current_time) { |
std::unique_ptr<FeatureToTokensMap> tokens( |
base::MakeUnique<FeatureToTokensMap>()); |
if (!base::FeatureList::IsEnabled(features::kOriginTrials)) |
@@ -103,7 +106,8 @@ TrialTokenValidator::GetValidTokensFromHeaders( |
std::string token; |
while (headers->EnumerateHeader(&iter, "Origin-Trial", &token)) { |
std::string token_feature; |
- if (TrialTokenValidator::ValidateToken(token, origin, &token_feature) == |
+ if (TrialTokenValidator::ValidateToken(token, origin, &token_feature, |
+ current_time) == |
blink::WebOriginTrialTokenStatus::kSuccess) { |
(*tokens)[token_feature].push_back(token); |
} |
@@ -113,7 +117,8 @@ TrialTokenValidator::GetValidTokensFromHeaders( |
std::unique_ptr<TrialTokenValidator::FeatureToTokensMap> |
TrialTokenValidator::GetValidTokens(const url::Origin& origin, |
- const FeatureToTokensMap& tokens) { |
+ const FeatureToTokensMap& tokens, |
+ base::Time current_time) { |
std::unique_ptr<FeatureToTokensMap> out_tokens( |
base::MakeUnique<FeatureToTokensMap>()); |
if (!base::FeatureList::IsEnabled(features::kOriginTrials)) |
@@ -125,7 +130,8 @@ TrialTokenValidator::GetValidTokens(const url::Origin& origin, |
for (const auto& feature : tokens) { |
for (const std::string& token : feature.second) { |
std::string token_feature; |
- if (TrialTokenValidator::ValidateToken(token, origin, &token_feature) == |
+ if (TrialTokenValidator::ValidateToken(token, origin, &token_feature, |
+ current_time) == |
blink::WebOriginTrialTokenStatus::kSuccess) { |
DCHECK_EQ(token_feature, feature.first); |
(*out_tokens)[feature.first].push_back(token); |