summaryrefslogtreecommitdiffstats
path: root/chrome/browser/diagnostics/diagnostics_writer.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/diagnostics/diagnostics_writer.h')
-rw-r--r--chrome/browser/diagnostics/diagnostics_writer.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/chrome/browser/diagnostics/diagnostics_writer.h b/chrome/browser/diagnostics/diagnostics_writer.h
new file mode 100644
index 0000000..1fad047
--- /dev/null
+++ b/chrome/browser/diagnostics/diagnostics_writer.h
@@ -0,0 +1,66 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_DIAGNOSTICS_DIAGNOSTICS_WRITER_H_
+#define CHROME_BROWSER_DIAGNOSTICS_DIAGNOSTICS_WRITER_H_
+
+#include "base/basictypes.h"
+#include "base/memory/scoped_ptr.h"
+#include "chrome/browser/diagnostics/diagnostics_model.h"
+
+namespace diagnostics {
+
+// Console base class used internally.
+class SimpleConsole;
+
+class DiagnosticsWriter : public DiagnosticsModel::Observer {
+ public:
+ // The type of formatting done by this writer.
+ enum FormatType {
+ MACHINE,
+ LOG,
+ HUMAN
+ };
+
+ explicit DiagnosticsWriter(FormatType format);
+ virtual ~DiagnosticsWriter();
+
+ // How many tests reported failure.
+ int failures() { return failures_; }
+
+ // What format are we writing things in.
+ FormatType format() const { return format_; }
+
+ // Write an informational line of text in white over black. String must be
+ // UTF8 encoded. A newline will be added for non-LOG output formats.
+ bool WriteInfoLine(const std::string& info_text);
+
+ // DiagnosticsModel::Observer overrides
+ virtual void OnFinished(int id, DiagnosticsModel* model) OVERRIDE;
+ virtual void OnDoneAll(DiagnosticsModel* model) OVERRIDE;
+
+ private:
+ // Write a result block. For humans, it consists of two lines. The first line
+ // has [PASS] or [FAIL] with |name| and the second line has the text in
+ // |extra|. For machine and log formats, we just have [PASS] or [FAIL],
+ // followed by the exact error code and the id. Name and extra strings must be
+ // UTF8 encoded, as they are user-facing strings.
+ bool WriteResult(bool success,
+ const std::string& id,
+ const std::string& name,
+ int outcome_code,
+ const std::string& extra);
+
+ scoped_ptr<SimpleConsole> console_;
+
+ // Keeps track of how many tests reported failure.
+ int failures_;
+ FormatType format_;
+
+ DISALLOW_COPY_AND_ASSIGN(DiagnosticsWriter);
+};
+
+} // namespace diagnostics
+
+#endif // CHROME_BROWSER_DIAGNOSTICS_DIAGNOSTICS_WRITER_H_