[Cronet] Don't copy UrlResponseInfo or Error.

Currently, RequestFinishedInfo contains UrlResponseInfo and Error
members. Because struct-in-struct is implemented to use
base::Optional<T>, it therefore contains inline copies of these members.

These structures can be large -- the UrlResponseInfo can contain
headers, and the Error contains error strings.

Therefore, instead of copying these members into the UrlResponseInfo,
separate pointers should be passed to OnRequestFinished().

Ownership of those pointers should be shared in a similar manner to
|request_info| for consistency and to avoid confusion.

Bug: 879208
Change-Id: I9b2ff91706819b8d10e7093e33002d6868dfb735
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1610591
Reviewed-by: Paul Jensen <pauljensen@chromium.org>
Reviewed-by: Misha Efimov <mef@chromium.org>
Commit-Queue: Caleb Raitto <caraitto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#661362}
11 files changed