| // Copyright 2021 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // The ARC Java collector reports Java crashes that happen in the ARC++ |
| // container and ARC VM. |
| |
| #ifndef CRASH_REPORTER_ARC_JAVA_COLLECTOR_H_ |
| #define CRASH_REPORTER_ARC_JAVA_COLLECTOR_H_ |
| |
| #include <sstream> |
| #include <string> |
| #include <unordered_map> |
| |
| #include <base/macros.h> |
| #include <base/time/time.h> |
| #include <gtest/gtest_prod.h> // for FRIEND_TEST |
| |
| #include "crash-reporter/arc_util.h" |
| #include "crash-reporter/crash_collector.h" |
| |
| // Collector for Java crashes in the ARC++ container and ARC VM. |
| class ArcJavaCollector : public CrashCollector { |
| public: |
| ArcJavaCollector(); |
| ArcJavaCollector(const ArcJavaCollector&) = delete; |
| ArcJavaCollector& operator=(const ArcJavaCollector&) = delete; |
| |
| ~ArcJavaCollector() override = default; |
| |
| // Reads a Java crash log for the given |crash_type| from standard input, or |
| // closes the stream if reporting is disabled. |
| // |uptime| can be zero if the value is unknown. |
| bool HandleCrash(const std::string& crash_type, |
| const arc_util::BuildProperty& build_property, |
| base::TimeDelta uptime); |
| |
| private: |
| FRIEND_TEST(ArcJavaCollectorTest, AddArcMetaData); |
| FRIEND_TEST(ArcJavaCollectorTest, CreateReportForJavaCrash); |
| |
| // CrashCollector overrides. |
| std::string GetProductVersion() const override; |
| |
| // Adds the |process|, |crash_type| and Chrome version as metadata. |
| // |uptime| can be zero if the value is unknown. |
| void AddArcMetaData(const std::string& process, |
| const std::string& crash_type, |
| base::TimeDelta uptime); |
| |
| using CrashLogHeaderMap = std::unordered_map<std::string, std::string>; |
| |
| bool CreateReportForJavaCrash(const std::string& crash_type, |
| const arc_util::BuildProperty& build_property, |
| const CrashLogHeaderMap& map, |
| const std::string& exception_info, |
| const std::string& log, |
| base::TimeDelta uptime, |
| bool* out_of_capacity); |
| }; |
| |
| #endif // CRASH_REPORTER_ARC_JAVA_COLLECTOR_H_ |