blob: 88722d7b79d035e071099fb0ea9520308e1d510e [file] [log] [blame]
// Copyright 2016 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.
#include "headless/public/util/error_reporter.h"
#include <sstream>
#include "base/logging.h"
namespace headless {
ErrorReporter::ErrorReporter() {}
ErrorReporter::~ErrorReporter() {}
void ErrorReporter::Push() {
path_.push_back(nullptr);
}
void ErrorReporter::Pop() {
path_.pop_back();
}
void ErrorReporter::SetName(const char* name) {
DCHECK(!path_.empty());
path_.back() = name;
}
void ErrorReporter::AddError(base::StringPiece description) {
std::stringstream error;
for (size_t i = 0; i < path_.size(); i++) {
if (!path_[i]) {
DCHECK_EQ(i + 1, path_.size());
break;
}
if (i)
error << '.';
error << path_[i];
}
if (error.tellp())
error << ": ";
error << description;
errors_.push_back(error.str());
}
bool ErrorReporter::HasErrors() const {
return !errors_.empty();
}
} // namespace headless