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 @@ ...@@ -13,8 +13,9 @@
#include "net/base/escape.h" #include "net/base/escape.h"
#include "net/base/load_flags.h" #include "net/base/load_flags.h"
#include "net/traffic_annotation/network_traffic_annotation.h" #include "net/traffic_annotation/network_traffic_annotation.h"
#include "net/url_request/url_fetcher.h" #include "services/network/public/cpp/resource_request.h"
#include "net/url_request/url_request_context_getter.h" #include "services/network/public/cpp/simple_url_loader.h"
#include "services/network/public/mojom/url_loader_factory.mojom.h"
namespace { namespace {
const char kResetReportUrl[] = const char kResetReportUrl[] =
...@@ -32,9 +33,7 @@ GURL GetClientReportUrl(const std::string& report_url) { ...@@ -32,9 +33,7 @@ GURL GetClientReportUrl(const std::string& report_url) {
} // namespace } // namespace
ResetReportUploader::ResetReportUploader(content::BrowserContext* context) ResetReportUploader::ResetReportUploader(content::BrowserContext* context)
: url_request_context_getter_( : browser_context_(context) {}
content::BrowserContext::GetDefaultStoragePartition(context)->
GetURLRequestContext()) {}
ResetReportUploader::~ResetReportUploader() {} ResetReportUploader::~ResetReportUploader() {}
...@@ -72,19 +71,29 @@ void ResetReportUploader::DispatchReport( ...@@ -72,19 +71,29 @@ void ResetReportUploader::DispatchReport(
"send the data." "send the data."
})"); })");
// Note fetcher will be deleted by OnURLFetchComplete. auto resource_request = std::make_unique<network::ResourceRequest>();
net::URLFetcher* fetcher = resource_request->url = GetClientReportUrl(kResetReportUrl);
net::URLFetcher::Create(GetClientReportUrl(kResetReportUrl), resource_request->load_flags = net::LOAD_DO_NOT_SEND_COOKIES |
net::URLFetcher::POST, this, traffic_annotation)
.release();
fetcher->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES |
net::LOAD_DO_NOT_SAVE_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES |
net::LOAD_DISABLE_CACHE); net::LOAD_DISABLE_CACHE;
fetcher->SetRequestContext(url_request_context_getter_.get()); resource_request->method = "POST";
fetcher->SetUploadData("application/octet-stream", request_data); std::unique_ptr<network::SimpleURLLoader> simple_url_loader =
fetcher->Start(); 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) { void ResetReportUploader::OnSimpleLoaderComplete(
delete source; SimpleURLLoaderList::iterator it,
std::unique_ptr<std::string> response_body) {
simple_url_loaders_.erase(it);
} }
...@@ -5,18 +5,18 @@ ...@@ -5,18 +5,18 @@
#ifndef CHROME_BROWSER_PROFILE_RESETTER_RESET_REPORT_UPLOADER_H_ #ifndef CHROME_BROWSER_PROFILE_RESETTER_RESET_REPORT_UPLOADER_H_
#define 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/macros.h"
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "components/keyed_service/core/keyed_service.h" #include "components/keyed_service/core/keyed_service.h"
#include "net/url_request/url_fetcher_delegate.h"
namespace content { namespace content {
class BrowserContext; class BrowserContext;
} }
namespace net { namespace network {
class URLFetcher; class SimpleURLLoader;
class URLRequestContextGetter;
} }
namespace reset_report { namespace reset_report {
...@@ -24,8 +24,7 @@ class ChromeResetReport; ...@@ -24,8 +24,7 @@ class ChromeResetReport;
} }
// Service whose job is up upload ChromeResetReports. // Service whose job is up upload ChromeResetReports.
class ResetReportUploader : public KeyedService, class ResetReportUploader : public KeyedService {
private net::URLFetcherDelegate {
public: public:
explicit ResetReportUploader(content::BrowserContext* context); explicit ResetReportUploader(content::BrowserContext* context);
~ResetReportUploader() override; ~ResetReportUploader() override;
...@@ -33,9 +32,14 @@ class ResetReportUploader : public KeyedService, ...@@ -33,9 +32,14 @@ class ResetReportUploader : public KeyedService,
void DispatchReport(const reset_report::ChromeResetReport& report); void DispatchReport(const reset_report::ChromeResetReport& report);
private: 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); 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