chromium/ios/chrome/browser/crash_report/model/crash_helper.h

// 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_