Commit 72cd15a2 authored by Mark Pilgrim's avatar Mark Pilgrim Committed by Commit Bot

Migrate ResetReportUploader to SimpleURLLoader

Bug: 773295
Change-Id: I791e51cafbfc1a03f64f1edc58699e65307ce3b5
Reviewed-on: https://chromium-review.googlesource.com/1025068Reviewed-by: default avatarMatt Menke <mmenke@chromium.org>
Reviewed-by: default avatarDominic Battré <battre@chromium.org>
Commit-Queue: Mark Pilgrim <pilgrim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553690}
parent 5e7b602b
......@@ -13,8 +13,9 @@
#include "net/base/escape.h"
#include "net/base/load_flags.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "net/url_request/url_fetcher.h"
#include "net/url_request/url_request_context_getter.h"
#include "services/network/public/cpp/resource_request.h"
#include "services/network/public/cpp/simple_url_loader.h"
#include "services/network/public/mojom/url_loader_factory.mojom.h"
namespace {
const char kResetReportUrl[] =
......@@ -32,9 +33,7 @@ GURL GetClientReportUrl(const std::string& report_url) {
} // namespace
ResetReportUploader::ResetReportUploader(content::BrowserContext* context)
: url_request_context_getter_(
content::BrowserContext::GetDefaultStoragePartition(context)->
GetURLRequestContext()) {}
: browser_context_(context) {}
ResetReportUploader::~ResetReportUploader() {}
......@@ -72,19 +71,29 @@ void ResetReportUploader::DispatchReport(
"send the data."
})");
// Note fetcher will be deleted by OnURLFetchComplete.
net::URLFetcher* fetcher =
net::URLFetcher::Create(GetClientReportUrl(kResetReportUrl),
net::URLFetcher::POST, this, traffic_annotation)
.release();
fetcher->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES |
net::LOAD_DO_NOT_SAVE_COOKIES |
net::LOAD_DISABLE_CACHE);
fetcher->SetRequestContext(url_request_context_getter_.get());
fetcher->SetUploadData("application/octet-stream", request_data);
fetcher->Start();
auto resource_request = std::make_unique<network::ResourceRequest>();
resource_request->url = GetClientReportUrl(kResetReportUrl);
resource_request->load_flags = net::LOAD_DO_NOT_SEND_COOKIES |
net::LOAD_DO_NOT_SAVE_COOKIES |
net::LOAD_DISABLE_CACHE;
resource_request->method = "POST";
std::unique_ptr<network::SimpleURLLoader> simple_url_loader =
network::SimpleURLLoader::Create(std::move(resource_request),
traffic_annotation);
simple_url_loader->AttachStringForUpload(request_data,
"application/octet-stream");
auto it = simple_url_loaders_.insert(simple_url_loaders_.begin(),
std::move(simple_url_loader));
simple_url_loader->DownloadToStringOfUnboundedSizeUntilCrashAndDie(
content::BrowserContext::GetDefaultStoragePartition(browser_context_)
->GetURLLoaderFactoryForBrowserProcess()
.get(),
base::BindOnce(&ResetReportUploader::OnSimpleLoaderComplete,
base::Unretained(this), std::move(it)));
}
void ResetReportUploader::OnURLFetchComplete(const net::URLFetcher* source) {
delete source;
void ResetReportUploader::OnSimpleLoaderComplete(
SimpleURLLoaderList::iterator it,
std::unique_ptr<std::string> response_body) {
simple_url_loaders_.erase(it);
}
......@@ -5,18 +5,18 @@
#ifndef CHROME_BROWSER_PROFILE_RESETTER_RESET_REPORT_UPLOADER_H_
#define CHROME_BROWSER_PROFILE_RESETTER_RESET_REPORT_UPLOADER_H_
#include <list>
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "components/keyed_service/core/keyed_service.h"
#include "net/url_request/url_fetcher_delegate.h"
namespace content {
class BrowserContext;
}
namespace net {
class URLFetcher;
class URLRequestContextGetter;
namespace network {
class SimpleURLLoader;
}
namespace reset_report {
......@@ -24,8 +24,7 @@ class ChromeResetReport;
}
// Service whose job is up upload ChromeResetReports.
class ResetReportUploader : public KeyedService,
private net::URLFetcherDelegate {
class ResetReportUploader : public KeyedService {
public:
explicit ResetReportUploader(content::BrowserContext* context);
~ResetReportUploader() override;
......@@ -33,9 +32,14 @@ class ResetReportUploader : public KeyedService,
void DispatchReport(const reset_report::ChromeResetReport& report);
private:
void OnURLFetchComplete(const net::URLFetcher* source) override;
using SimpleURLLoaderList =
std::list<std::unique_ptr<network::SimpleURLLoader>>;
void OnSimpleLoaderComplete(SimpleURLLoaderList::iterator it,
std::unique_ptr<std::string> response_body);
scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_;
content::BrowserContext* browser_context_;
SimpleURLLoaderList simple_url_loaders_;
DISALLOW_COPY_AND_ASSIGN(ResetReportUploader);
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment