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

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 4 years, 4 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 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_);

Powered by Google App Engine
This is Rietveld 408576698