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

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

Issue 2652603002: service worker: Add UMA for navigation preload response timing. (Closed)
Patch Set: patch for landing? 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 988e693db7de19b6e8ef0c4b4cff94ef5998a3b9..122ceda76ccbcda3ec4b9c7d0aa0560c9c1d3c41 100644
--- a/content/browser/service_worker/service_worker_fetch_dispatcher.cc
+++ b/content/browser/service_worker/service_worker_fetch_dispatcher.cc
@@ -73,8 +73,11 @@ class DelegatingURLLoader final : public mojom::URLLoader {
// wrapped client.
class DelegatingURLLoaderClient final : public mojom::URLLoaderClient {
public:
- explicit DelegatingURLLoaderClient(mojom::URLLoaderClientPtr client)
- : binding_(this), client_(std::move(client)) {}
+ explicit DelegatingURLLoaderClient(mojom::URLLoaderClientPtr client,
+ base::OnceClosure on_response)
+ : binding_(this),
+ client_(std::move(client)),
+ on_response_(std::move(on_response)) {}
~DelegatingURLLoaderClient() override {
if (!completed_) {
// Let the service worker know that the request has been canceled.
@@ -102,6 +105,8 @@ class DelegatingURLLoaderClient final : public mojom::URLLoaderClient {
const ResourceResponseHead& head,
mojom::DownloadedTempFileAssociatedPtrInfo downloaded_file) override {
client_->OnReceiveResponse(head, std::move(downloaded_file));
+ DCHECK(on_response_);
+ std::move(on_response_).Run();
}
void OnReceiveRedirect(const net::RedirectInfo& redirect_info,
const ResourceResponseHead& head) override {
@@ -125,6 +130,7 @@ class DelegatingURLLoaderClient final : public mojom::URLLoaderClient {
private:
mojo::AssociatedBinding<mojom::URLLoaderClient> binding_;
mojom::URLLoaderClientPtr client_;
+ base::OnceClosure on_response_;
bool completed_ = false;
DISALLOW_COPY_AND_ASSIGN(DelegatingURLLoaderClient);
@@ -407,7 +413,8 @@ void ServiceWorkerFetchDispatcher::Complete(
}
bool ServiceWorkerFetchDispatcher::MaybeStartNavigationPreload(
- net::URLRequest* original_request) {
+ net::URLRequest* original_request,
+ base::OnceClosure on_response) {
if (resource_type_ != RESOURCE_TYPE_MAIN_FRAME &&
resource_type_ != RESOURCE_TYPE_SUB_FRAME) {
return false;
@@ -484,7 +491,7 @@ bool ServiceWorkerFetchDispatcher::MaybeStartNavigationPreload(
preload_handle_->url_loader_client_request =
mojo::MakeRequest(&url_loader_client_ptr);
auto url_loader_client = base::MakeUnique<DelegatingURLLoaderClient>(
- std::move(url_loader_client_ptr));
+ std::move(url_loader_client_ptr), std::move(on_response));
mojom::URLLoaderClientAssociatedPtrInfo url_loader_client_associated_ptr_info;
url_loader_client->Bind(&url_loader_client_associated_ptr_info,
url_loader_factory.associated_group());

Powered by Google App Engine
This is Rietveld 408576698