| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_ALLOCATION_RECORDER_TESTING_CRASH_VERIFICATION_H_ |
| #define COMPONENTS_ALLOCATION_RECORDER_TESTING_CRASH_VERIFICATION_H_ |
| |
| #include "base/debug/debugging_buildflags.h" |
| #include "base/functional/callback.h" |
| |
| namespace allocation_recorder { |
| class Payload; |
| } |
| |
| namespace base { |
| class FilePath; |
| } |
| |
| namespace allocation_recorder::testing { |
| |
| // Verify that a crash creates a Crashpad report and that this report complies |
| // to some test specific requirements. |crash_function| is required to be set |
| // and to cause a single Crashpad report to be created. |
| |
| // Crash a process and verify that the Crashpad report has no data from the |
| // AllocationTraceRecorder. |
| void VerifyCrashCreatesCrashpadReportWithoutAllocationRecorderStream( |
| const base::FilePath& crashpad_database_path, |
| base::OnceClosure crash_function); |
| |
| #if BUILDFLAG(ENABLE_ALLOCATION_STACK_TRACE_RECORDER) |
| // Crash a process and verify that the Crashpad report: |
| // - contains exactly one data stream from the AllocationTraceRecorder. |
| // - this data stream's payload can be deserialized into the |
| // AllocationTraceRecorder's payload. |
| // - if set, check that the deserialized payload is accepted by |
| // |payload_verification|. |
| void VerifyCrashCreatesCrashpadReportWithAllocationRecorderStream( |
| const base::FilePath& crashpad_database_path, |
| base::OnceClosure crash_function, |
| base::OnceCallback<void(const allocation_recorder::Payload& payload)> |
| payload_verification); |
| |
| // Verify some basic properties of the payload are set. If |
| // |expect_report_with_content| is true, at least one allocation entry is |
| // required, otherwise there must be no entries. |
| void VerifyPayload(const bool expect_report_with_content, |
| const allocation_recorder::Payload& payload); |
| #endif |
| |
| } // namespace allocation_recorder::testing |
| |
| #endif // COMPONENTS_ALLOCATION_RECORDER_TESTING_CRASH_VERIFICATION_H_ |