Chromium Code Reviews| Index: content/browser/service_worker/service_worker_version.cc |
| diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc |
| index 7741575284bcd7d02861045282a1c74bf7b7b68d..8f8994a0a6bc5ea3e4abfb66e838c9a7a292c8b4 100644 |
| --- a/content/browser/service_worker/service_worker_version.cc |
| +++ b/content/browser/service_worker/service_worker_version.cc |
| @@ -20,6 +20,7 @@ |
| #include "base/strings/string16.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/threading/thread_task_runner_handle.h" |
| +#include "base/time/default_clock.h" |
| #include "base/time/default_tick_clock.h" |
| #include "content/browser/bad_message.h" |
| #include "content/browser/child_process_security_policy_impl.h" |
| @@ -291,6 +292,7 @@ ServiceWorkerVersion::ServiceWorkerVersion( |
| context_(context), |
| script_cache_map_(this, context), |
| tick_clock_(base::WrapUnique(new base::DefaultTickClock)), |
| + clock_(base::WrapUnique(new base::DefaultClock)), |
|
Marijn Kruisselbrink
2017/08/02 19:57:25
here too, why WrapUnique and not just base::MakeUn
iclelland
2017/08/02 20:22:05
Sigh.. I suppose because I can never remember whic
|
| ping_controller_(new PingController(this)), |
| weak_factory_(this) { |
| DCHECK_NE(kInvalidServiceWorkerVersionId, version_id); |
| @@ -552,7 +554,7 @@ int ServiceWorkerVersion::StartRequestWithCustomTimeout( |
| << " can only be dispatched to an active worker: " << status(); |
| int request_id = pending_requests_.Add(base::MakeUnique<PendingRequest>( |
| - error_callback, base::Time::Now(), tick_clock_->NowTicks(), event_type)); |
| + error_callback, clock_->Now(), tick_clock_->NowTicks(), event_type)); |
| TRACE_EVENT_ASYNC_BEGIN2("ServiceWorker", "ServiceWorkerVersion::Request", |
| pending_requests_.Lookup(request_id), "Request id", |
| request_id, "Event type", |
| @@ -622,7 +624,7 @@ bool ServiceWorkerVersion::FinishExternalRequest( |
| if (iter != external_request_uuid_to_request_id_.end()) { |
| int request_id = iter->second; |
| external_request_uuid_to_request_id_.erase(iter); |
| - return FinishRequest(request_id, true, base::Time::Now()); |
| + return FinishRequest(request_id, true, clock_->Now()); |
| } |
| // It is possible that the request was cancelled or timed out before and we |
| @@ -743,8 +745,8 @@ void ServiceWorkerVersion::Doom() { |
| void ServiceWorkerVersion::SetValidOriginTrialTokens( |
| const TrialTokenValidator::FeatureToTokensMap& tokens) { |
| - origin_trial_tokens_ = |
| - TrialTokenValidator::GetValidTokens(url::Origin(scope()), tokens); |
| + origin_trial_tokens_ = TrialTokenValidator::GetValidTokens( |
| + url::Origin(scope()), tokens, clock_->Now()); |
| } |
| void ServiceWorkerVersion::SetDevToolsAttached(bool attached) { |
| @@ -796,7 +798,7 @@ void ServiceWorkerVersion::SetMainScriptHttpResponseInfo( |
| // wasn't set in the entry. |
| if (!origin_trial_tokens_) { |
| origin_trial_tokens_ = TrialTokenValidator::GetValidTokensFromHeaders( |
| - url::Origin(scope()), http_info.headers.get()); |
| + url::Origin(scope()), http_info.headers.get(), clock_->Now()); |
| } |
| for (auto& observer : listeners_) |
| @@ -812,6 +814,11 @@ void ServiceWorkerVersion::SetTickClockForTesting( |
| tick_clock_ = std::move(tick_clock); |
| } |
| +void ServiceWorkerVersion::SetClockForTesting( |
| + std::unique_ptr<base::Clock> clock) { |
| + clock_ = std::move(clock); |
| +} |
| + |
| const net::HttpResponseInfo* |
| ServiceWorkerVersion::GetMainScriptHttpResponseInfo() { |
| return main_script_http_info_.get(); |
| @@ -1799,7 +1806,7 @@ void ServiceWorkerVersion::MarkIfStale() { |
| if (!registration || registration->active_version() != this) |
| return; |
| base::TimeDelta time_since_last_check = |
| - base::Time::Now() - registration->last_update_check(); |
| + clock_->Now() - registration->last_update_check(); |
| if (time_since_last_check > kServiceWorkerScriptMaxCacheAge) |
| RestartTick(&stale_time_); |
| } |