Popular sites on the NTP: check that experiment group StartsWith (rather than IS...
[chromium-blink-merge.git] / chrome / browser / safe_browsing / incident_reporting / incident_report_uploader.h
blob46de6fe06807edf4eb890b39ca8a8915d250cad9
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.
5 #ifndef CHROME_BROWSER_SAFE_BROWSING_INCIDENT_REPORTING_INCIDENT_REPORT_UPLOADER_H_
6 #define CHROME_BROWSER_SAFE_BROWSING_INCIDENT_REPORTING_INCIDENT_REPORT_UPLOADER_H_
8 #include "base/callback.h"
9 #include "base/memory/scoped_ptr.h"
11 namespace safe_browsing {
13 class ClientIncidentResponse;
15 // An abstract base class for a facility that uploads incident reports.
16 class IncidentReportUploader {
17 public:
18 // The result of a report upload. Values here are used for UMA so they must
19 // not be changed.
20 enum Result {
21 UPLOAD_SUCCESS = 0, // A response was received.
22 UPLOAD_SUPPRESSED = 1, // The request was suppressed.
23 UPLOAD_INVALID_REQUEST = 2, // The request was invalid.
24 UPLOAD_CANCELLED = 3, // The upload was cancelled.
25 UPLOAD_REQUEST_FAILED = 4, // Upload failed.
26 UPLOAD_INVALID_RESPONSE = 5, // The response was not recognized.
27 UPLOAD_NO_DOWNLOAD = 6, // No last download was found.
28 NUM_UPLOAD_RESULTS
31 // A callback run by the uploader upon success or failure. The first argument
32 // indicates the result of the upload, while the second contains the response
33 // received, if any.
34 typedef base::Callback<void(Result, scoped_ptr<ClientIncidentResponse>)>
35 OnResultCallback;
37 virtual ~IncidentReportUploader();
39 protected:
40 explicit IncidentReportUploader(const OnResultCallback& callback);
42 // The callback by which results are returned.
43 OnResultCallback callback_;
46 } // namespace safe_browsing
48 #endif // CHROME_BROWSER_SAFE_BROWSING_INCIDENT_REPORTING_INCIDENT_REPORT_UPLOADER_H_