chromium/components/feedback/feedback_util.h

// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_FEEDBACK_FEEDBACK_UTIL_H_
#define COMPONENTS_FEEDBACK_FEEDBACK_UTIL_H_

#include <optional>
#include <string>
#include <string_view>

#include "base/files/file_path.h"
#include "build/build_config.h"
#include "components/feedback/feedback_common.h"

namespace feedback_util {

// Creates a ZIP file that contains a single file within. That file is named
// `filename` and its contents is `data`. Returns the compressed archive, or
// nullopt on failure.
std::optional<std::string> ZipString(const base::FilePath& filename,
                                     std::string_view data);

// Converts the entries in `sys_info` into a single string. Primarily used for
// creating a system_logs.txt file attached to feedback reports.
std::string LogsToString(const FeedbackCommon::SystemLogsMap& sys_info);

// Removes URL fields from the autofill logs.
void RemoveUrlsFromAutofillData(std::string& autofill_metadata);

#if !BUILDFLAG(IS_WIN)
// Reads the data from the latter part of the file specified by `path`.
// If the file size is greater than `max_size` in bytes, the data will be
// truncated to `max_size`. Returns the file contents, or nullopt on failure.
std::optional<std::string> ReadEndOfFile(const base::FilePath& path,
                                         size_t max_size);
#endif

}  // namespace feedback_util

#endif  // COMPONENTS_FEEDBACK_FEEDBACK_UTIL_H_