• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 CHROME_BROWSER_SAFE_BROWSING_INCIDENT_REPORTING_INCIDENT_REPORT_UPLOADER_H_
6 #define CHROME_BROWSER_SAFE_BROWSING_INCIDENT_REPORTING_INCIDENT_REPORT_UPLOADER_H_
7 
8 #include "base/callback.h"
9 #include "base/memory/scoped_ptr.h"
10 
11 namespace safe_browsing {
12 
13 class ClientIncidentResponse;
14 
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
29   };
30 
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;
36 
37   virtual ~IncidentReportUploader();
38 
39  protected:
40   explicit IncidentReportUploader(const OnResultCallback& callback);
41 
42   // The callback by which results are returned.
43   OnResultCallback callback_;
44 };
45 
46 }  // namespace safe_browsing
47 
48 #endif  // CHROME_BROWSER_SAFE_BROWSING_INCIDENT_REPORTING_INCIDENT_REPORT_UPLOADER_H_
49