1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef COMPONENTS_DOMAIN_RELIABILITY_UPLOADER_H_ 6 #define COMPONENTS_DOMAIN_RELIABILITY_UPLOADER_H_ 7 8 #include <map> 9 10 #include "base/callback_forward.h" 11 #include "base/memory/ref_counted.h" 12 #include "components/domain_reliability/domain_reliability_export.h" 13 #include "url/gurl.h" 14 15 namespace net { 16 class URLFetcher; 17 class URLRequest; 18 class URLRequestContextGetter; 19 } // namespace net 20 21 namespace domain_reliability { 22 23 // Uploads Domain Reliability reports to collectors. 24 class DOMAIN_RELIABILITY_EXPORT DomainReliabilityUploader { 25 public: 26 typedef base::Callback<void(bool success)> UploadCallback; 27 28 DomainReliabilityUploader(); 29 30 virtual ~DomainReliabilityUploader(); 31 32 // Creates an uploader that uses the given |url_request_context_getter| to 33 // get a URLRequestContext to use for uploads. (See test_util.h for a mock 34 // version.) 35 static scoped_ptr<DomainReliabilityUploader> Create(const scoped_refptr< 36 net::URLRequestContextGetter>& url_request_context_getter); 37 38 // Uploads |report_json| to |upload_url| and calls |callback| when the upload 39 // has either completed or failed. 40 virtual void UploadReport(const std::string& report_json, 41 const GURL& upload_url, 42 const UploadCallback& callback) = 0; 43 44 static bool URLRequestIsUpload(const net::URLRequest& request); 45 }; 46 47 } // namespace domain_reliability 48 49 #endif // COMPONENTS_DOMAIN_RELIABILITY_UPLOADER_H_ 50