|  | // Copyright 2015 The Chromium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef IOS_CHROME_BROWSER_CRASH_REPORT_MODEL_CRASH_HELPER_H_ | 
|  | #define IOS_CHROME_BROWSER_CRASH_REPORT_MODEL_CRASH_HELPER_H_ | 
|  |  | 
|  | #include "base/feature_list.h" | 
|  | #include "base/time/time.h" | 
|  |  | 
|  | namespace crash_helper { | 
|  |  | 
|  | // Starts the crash handlers. This must be run as soon as possible to catch | 
|  | // early crashes. | 
|  | void Start(); | 
|  |  | 
|  | // Enables/Disables crash handling. | 
|  | void SetEnabled(bool enabled); | 
|  |  | 
|  | // Process and begin uploading pending crash reports if application is active. | 
|  | // If application state is inactive or backgrounded, this is a no-op. Can be | 
|  | // called multiple times, but will only take effect the first time (when app | 
|  | // state is active). | 
|  | void UploadCrashReports(); | 
|  |  | 
|  | // Process any pending crashpad reports, and mark them as | 
|  | // 'uploaded_in_recovery_mode'. | 
|  | void ProcessIntermediateReportsForSafeMode(); | 
|  |  | 
|  | // Returns the number of crash reports waiting to send to the server. This | 
|  | // function will wait for an operation to complete on a background thread. | 
|  | int GetPendingCrashReportCount(); | 
|  |  | 
|  | // Gets the number of pending crash reports on a background thread and invokes | 
|  | // `callback` with the result when complete. | 
|  | void GetPendingCrashReportCount(void (^callback)(int)); | 
|  |  | 
|  | // Check if there is currently a crash report to upload. This function will wait | 
|  | // for an operation to complete on a background thread. | 
|  | bool HasReportToUpload(); | 
|  |  | 
|  | // Informs the crash report helper that crash restoration is about to begin. | 
|  | void WillStartCrashRestoration(); | 
|  |  | 
|  | // Starts uploading crash reports. Sets the upload interval to 1 second, and | 
|  | // sets a key in uploaded reports to allow tracking of reports that are uploaded | 
|  | // in recovery mode. | 
|  | void StartUploadingReportsInRecoveryMode(); | 
|  |  | 
|  | // Deletes any reports that were recorded or uploaded within the time range. | 
|  | void ClearReportsBetween(base::Time delete_begin, base::Time delete_end); | 
|  |  | 
|  | }  // namespace crash_helper | 
|  |  | 
|  | #endif  // IOS_CHROME_BROWSER_CRASH_REPORT_MODEL_CRASH_HELPER_H_ |