blob: 99691598f15204d371a13da5f06eccba8b2d4c9d [file] [log] [blame]
/*
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef SRC_TRACE_PROCESSOR_IMPORTERS_ANDROID_BUGREPORT_ANDROID_BUGREPORT_PARSER_H_
#define SRC_TRACE_PROCESSOR_IMPORTERS_ANDROID_BUGREPORT_ANDROID_BUGREPORT_PARSER_H_
#include "src/trace_processor/importers/common/chunked_trace_reader.h"
#include "src/trace_processor/storage/trace_storage.h"
namespace perfetto {
namespace trace_processor {
namespace util {
class ZipReader;
}
struct AndroidLogEvent;
class TraceProcessorContext;
// Trace importer for Android bugreport.zip archives.
class AndroidBugreportParser : public ChunkedTraceReader {
public:
explicit AndroidBugreportParser(TraceProcessorContext*);
~AndroidBugreportParser() override;
// ChunkedTraceReader implementation.
util::Status Parse(TraceBlobView) override;
void NotifyEndOfFile() override;
private:
bool DetectYearAndBrFilename();
void ParsePersistentLogcat();
void ParseDumpstateTxt();
void SortAndStoreLogcat();
void SortLogEvents();
TraceProcessorContext* const context_;
int br_year_ = 0; // The year when the bugreport has been taken.
std::string dumpstate_fname_; // The name of bugreport-xxx-2022-08-04....txt
std::string build_fpr_;
bool first_chunk_seen_ = false;
std::unique_ptr<util::ZipReader> zip_reader_;
std::vector<AndroidLogEvent> log_events_;
size_t log_events_last_sorted_idx_ = 0;
};
} // namespace trace_processor
} // namespace perfetto
#endif // SRC_TRACE_PROCESSOR_IMPORTERS_ANDROID_BUGREPORT_ANDROID_BUGREPORT_PARSER_H_