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

Unified Diff: content/browser/service_worker/service_worker_fetch_dispatcher.cc

Issue 2645493002: Increase the lifetime of Navigation Preload related objects. (Closed)
Patch Set: check fetchEvent in ServiceWorkerGlobalScopeProxy::onNavigationPreloadError Created 3 years, 11 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: content/browser/service_worker/service_worker_fetch_dispatcher.cc
diff --git a/content/browser/service_worker/service_worker_fetch_dispatcher.cc b/content/browser/service_worker/service_worker_fetch_dispatcher.cc
index 6c712a3f8a33e330593bf560ede0d358554c9191..8f69301810bc039cbfb96dc4dd8dee7f768ee3fc 100644
--- a/content/browser/service_worker/service_worker_fetch_dispatcher.cc
+++ b/content/browser/service_worker/service_worker_fetch_dispatcher.cc
@@ -167,9 +167,6 @@ ServiceWorkerMetrics::EventType FetchTypeToWaitUntilEventType(
void OnFetchEventFinished(
ServiceWorkerVersion* version,
int event_finish_id,
- mojom::URLLoaderFactoryPtr url_loader_factory,
- std::unique_ptr<mojom::URLLoader> url_loader,
- std::unique_ptr<mojom::URLLoaderClient> url_loader_client,
ServiceWorkerStatusCode status,
base::Time dispatch_event_time) {
version->FinishRequest(event_finish_id, status != SERVICE_WORKER_ERROR_ABORT,
@@ -332,15 +329,10 @@ void ServiceWorkerFetchDispatcher::DispatchFetchEvent() {
// |event_dispatcher| is owned by |version_|. So it is safe to pass the
// unretained raw pointer of |version_| to OnFetchEventFinished callback.
- // Pass |url_loader_factory_|, |url_Loader_| and |url_loader_client_| to the
- // callback to keep them alive while the FetchEvent is onging in the service
- // worker.
version_->event_dispatcher()->DispatchFetchEvent(
fetch_event_id, *request_, std::move(preload_handle_),
base::Bind(&OnFetchEventFinished, base::Unretained(version_.get()),
- event_finish_id, base::Passed(std::move(url_loader_factory_)),
- base::Passed(std::move(url_loader_)),
- base::Passed(std::move(url_loader_client_))));
+ event_finish_id));
}
void ServiceWorkerFetchDispatcher::DidFailToDispatch(
@@ -380,23 +372,23 @@ void ServiceWorkerFetchDispatcher::Complete(
fetch_callback.Run(status, fetch_result, response, version);
}
-void ServiceWorkerFetchDispatcher::MaybeStartNavigationPreload(
+bool ServiceWorkerFetchDispatcher::MaybeStartNavigationPreload(
net::URLRequest* original_request) {
if (resource_type_ != RESOURCE_TYPE_MAIN_FRAME &&
resource_type_ != RESOURCE_TYPE_SUB_FRAME) {
- return;
+ return false;
}
if (!version_->navigation_preload_state().enabled)
- return;
+ return false;
// TODO(horo): Currently NavigationPreload doesn't support request body.
if (!request_->blob_uuid.empty())
- return;
+ return false;
ServiceWorkerVersion::NavigationPreloadSupportStatus support_status =
version_->GetNavigationPreloadSupportStatus();
if (support_status !=
ServiceWorkerVersion::NavigationPreloadSupportStatus::SUPPORTED) {
- return;
+ return false;
}
ResourceRequestInfoImpl* original_info =
@@ -407,7 +399,7 @@ void ServiceWorkerFetchDispatcher::MaybeStartNavigationPreload(
} else {
DCHECK(requester_info->IsRenderer());
if (!requester_info->filter())
- return;
+ return false;
}
DCHECK(!url_loader_factory_);
@@ -471,6 +463,7 @@ void ServiceWorkerFetchDispatcher::MaybeStartNavigationPreload(
preload_handle_->url_loader = url_loader->CreateInterfacePtrAndBind();
url_loader_ = std::move(url_loader);
url_loader_client_ = std::move(url_loader_client);
+ return true;
}
ServiceWorkerMetrics::EventType ServiceWorkerFetchDispatcher::GetEventType()

Powered by Google App Engine
This is Rietveld 408576698