| 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);
|
|
|