Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(659)

Unified Diff: components/web_resource/web_resource_service.cc

Issue 2217683002: Allow embedder to use custom ResourceRequestAllowedNotifier (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Allow embedder to use custom ResourceRequestAllowedNotifier Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 9d2e5d70abc9fb0925ca71918b8db8d7156b9bd6..ee7279f092e11665807ca2de1f7bd98b3dd158e1 100644
--- a/components/web_resource/web_resource_service.cc
+++ b/components/web_resource/web_resource_service.cc
@@ -44,7 +44,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),
@@ -54,13 +56,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();
}
@@ -100,15 +102,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_);
« no previous file with comments | « components/web_resource/web_resource_service.h ('k') | components/web_resource/web_resource_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698