Home | History | Annotate | Download | only in incident_reporting
      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