webfeed: fix feed network UMA

ContentSuggestions.Feed.Network.CompressedResponseSizeKB.*
was being reported with the wrong size.
ResponseInfo().encoded_data_length is actually the size of
the first chunk of the response. Changed to use
CompletionStatus().encoded_data_length. (see crbug.com/1246168)

Also tweaked the surrounding code to use the local variable
'loader_response_info' rather than call ResponseInfo() multiple
times. This should have no effect.

Bug: 1247292
Change-Id: I3c5ed55aa42388ab9ce389a912810c1b554b52c3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3139303
Auto-Submit: Dan H <harringtond@chromium.org>
Commit-Queue: Dan H <harringtond@chromium.org>
Reviewed-by: Carlos Knippschild <carlosk@chromium.org>
Cr-Commit-Position: refs/heads/main@{#918845}
diff --git a/components/feed/core/v2/feed_network_impl.cc b/components/feed/core/v2/feed_network_impl.cc
index 00fc34a..16480ea 100644
--- a/components/feed/core/v2/feed_network_impl.cc
+++ b/components/feed/core/v2/feed_network_impl.cc
@@ -336,6 +336,8 @@
   void OnSimpleLoaderComplete(std::unique_ptr<std::string> response) {
     const network::mojom::URLResponseHead* loader_response_info =
         simple_loader_->ResponseInfo();
+    absl::optional<network::URLLoaderCompletionStatus> completion_status =
+        simple_loader_->CompletionStatus();
 
     NetworkResponseInfo response_info;
     response_info.status_code = simple_loader_->NetError();
@@ -346,14 +348,14 @@
     response_info.was_signed_in = !access_token_.empty();
     response_info.loader_start_time_ticks = loader_only_start_ticks_;
     response_info.encoded_size_bytes =
-        loader_response_info ? loader_response_info->encoded_data_length : 0;
+        completion_status ? completion_status->encoded_data_length : 0;
 
     // If overriding the feed host, try to grab the Bless nonce. This is
     // strictly informational, and only displayed in snippets-internals.
-    if (allow_bless_auth_ && simple_loader_->ResponseInfo()) {
+    if (allow_bless_auth_ && loader_response_info) {
       size_t iter = 0;
       std::string value;
-      while (simple_loader_->ResponseInfo()->headers->EnumerateHeader(
+      while (loader_response_info->headers->EnumerateHeader(
           &iter, "www-authenticate", &value)) {
         size_t pos = value.find("nonce=\"");
         if (pos != std::string::npos) {
@@ -369,7 +371,7 @@
     std::string response_body;
     if (response) {
       response_info.status_code =
-          simple_loader_->ResponseInfo()->headers->response_code();
+          loader_response_info->headers->response_code();
       response_info.response_body_bytes = response->size();
 
       response_body = std::move(*response);