| // 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 OnTestFinished(int index, DiagnosticsModel* model) OVERRIDE; |
| virtual void OnAllTestsDone(DiagnosticsModel* model) OVERRIDE; |
| virtual void OnRecoveryFinished(int index, DiagnosticsModel* model) OVERRIDE; |
| virtual void OnAllRecoveryDone(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_ |