| 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..5db95f9bf2bb32126f16d73324d104bc72f3abb6 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,35 @@ 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);
|
| +}
|
| +
|
| +bool WebResourceService::GetFetchScheduled() const {
|
| + return fetch_scheduled_;
|
| +}
|
| +
|
| // 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;
|
| +
|
| // First, put our next cache load on the MessageLoop.
|
| ScheduleFetch(cache_update_delay_ms_);
|
|
|
|
|