Chromium Code Reviews| Index: components/web_resource/web_resource_service.cc |
| diff --git a/components/web_resource/web_resource_service.cc b/components/web_resource/web_resource_service.cc |
| index 6e05d4159c142ffb195c05799bb75ef423463e38..c7b8cfa8f04fcb3903a5f2c6f269554beb5e2ee4 100644 |
| --- a/components/web_resource/web_resource_service.cc |
| +++ b/components/web_resource/web_resource_service.cc |
| @@ -43,7 +43,9 @@ WebResourceService::WebResourceService( |
| const char* disable_network_switch, |
| const ParseJSONCallback& parse_json_callback) |
| : prefs_(prefs), |
| - resource_request_allowed_notifier_(prefs, disable_network_switch), |
| + resource_request_allowed_notifier_(new ResourceRequestAllowedNotifier( |
| + prefs, disable_network_switch)), |
| + fetch_scheduled_(false), |
| in_fetch_(false), |
| web_resource_server_(web_resource_server), |
| application_locale_(application_locale), |
| @@ -53,13 +55,13 @@ WebResourceService::WebResourceService( |
| request_context_(request_context), |
| parse_json_callback_(parse_json_callback), |
| weak_ptr_factory_(this) { |
| - resource_request_allowed_notifier_.Init(this); |
| + resource_request_allowed_notifier_->Init(this); |
| DCHECK(prefs); |
| } |
| void WebResourceService::StartAfterDelay() { |
| // If resource requests are not allowed, we'll get a callback when they are. |
| - if (resource_request_allowed_notifier_.ResourceRequestsAllowed()) |
| + if (resource_request_allowed_notifier_->ResourceRequestsAllowed()) |
| OnResourceRequestsAllowed(); |
| } |
| @@ -99,15 +101,32 @@ void WebResourceService::OnURLFetchComplete(const net::URLFetcher* source) { |
| // Delay initial load of resource data into cache so as not to interfere |
| // with startup time. |
| void WebResourceService::ScheduleFetch(int64_t delay_ms) { |
| + if (fetch_scheduled_) |
| + return; |
| + fetch_scheduled_ = true; |
| base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| FROM_HERE, base::Bind(&WebResourceService::StartFetch, |
| weak_ptr_factory_.GetWeakPtr()), |
| base::TimeDelta::FromMilliseconds(delay_ms)); |
| } |
| +void WebResourceService::SetResourceRequestAllowedNotifier( |
| + std::unique_ptr<ResourceRequestAllowedNotifier> notifier) { |
| + resource_request_allowed_notifier_ = std::move(notifier); |
| + resource_request_allowed_notifier_->Init(this); |
| +} |
| + |
| // Initializes the fetching of data from the resource server. Data |
| // load calls OnURLFetchComplete. |
| void WebResourceService::StartFetch() { |
| + // Set to false so that next fetch can be scheduled after this fetch or |
| + // if we recieve notification that resource is allowed. |
| + fetch_scheduled_ = false; |
| + // Check whether fetching is allowed. |
| + if (!resource_request_allowed_notifier_->ResourceRequestsAllowed()) { |
| + return; |
|
Dan Beam
2016/08/08 18:15:33
nit: this is currently 3 space indent, but should
|
| + } |
|
Dan Beam
2016/08/08 18:15:33
nit: no curlies
|
| + |
| // First, put our next cache load on the MessageLoop. |
| ScheduleFetch(cache_update_delay_ms_); |