#ifndef CHROME_BROWSER_DIAGNOSTICS_DIAGNOSTICS_WRITER_H_
#define CHROME_BROWSER_DIAGNOSTICS_DIAGNOSTICS_WRITER_H_
#include <memory>
#include <string>
#include <string_view>
#include "chrome/browser/diagnostics/diagnostics_model.h"
namespace diagnostics {
class SimpleConsole;
class DiagnosticsWriter : public DiagnosticsModel::Observer {
public:
enum FormatType {
MACHINE,
LOG,
HUMAN
};
explicit DiagnosticsWriter(FormatType format);
DiagnosticsWriter(const DiagnosticsWriter&) = delete;
DiagnosticsWriter& operator=(const DiagnosticsWriter&) = delete;
~DiagnosticsWriter() override;
int failures() { return failures_; }
FormatType format() const { return format_; }
bool WriteInfoLine(const std::string& info_text);
void OnTestFinished(int index, DiagnosticsModel* model) override;
void OnAllTestsDone(DiagnosticsModel* model) override;
void OnRecoveryFinished(int index, DiagnosticsModel* model) override;
void OnAllRecoveryDone(DiagnosticsModel* model) override;
private:
bool WriteResult(bool success,
std::string_view id,
std::string_view name,
int outcome_code,
const std::string& extra);
std::unique_ptr<SimpleConsole> console_;
int failures_;
FormatType format_;
};
}
#endif