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