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
{
18 // The result of a report upload. Values here are used for UMA so they must
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.
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
34 typedef base::Callback
<void(Result
, scoped_ptr
<ClientIncidentResponse
>)>
37 virtual ~IncidentReportUploader();
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_