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

#ifndef CHROME_BROWSER_FEEDBACK_SYSTEM_LOGS_LOG_SOURCES_CHROME_INTERNAL_LOG_SOURCE_H_
#define CHROME_BROWSER_FEEDBACK_SYSTEM_LOGS_LOG_SOURCES_CHROME_INTERNAL_LOG_SOURCE_H_

#include "build/build_config.h"
#include "components/feedback/system_logs/system_logs_source.h"

namespace system_logs {

// Fetches internal Chrome logs.
class ChromeInternalLogSource : public SystemLogsSource {
 public:
  ChromeInternalLogSource();

  ChromeInternalLogSource(const ChromeInternalLogSource&) = delete;
  ChromeInternalLogSource& operator=(const ChromeInternalLogSource&) = delete;

  ~ChromeInternalLogSource() override;

  // SystemLogsSource override.
  void Fetch(SysLogsSourceCallback request) override;

 private:
  void PopulateSyncLogs(SystemLogsResponse* response);
  void PopulateExtensionInfoLogs(SystemLogsResponse* response);
  void PopulatePowerApiLogs(SystemLogsResponse* response);
  void PopulateDataReductionProxyLogs(SystemLogsResponse* response);
#if !BUILDFLAG(IS_CHROMEOS)
  void PopulateVariations(SystemLogsResponse* response);
#endif

#if BUILDFLAG(IS_CHROMEOS)
  void PopulateLocalStateSettings(SystemLogsResponse* response);
  void PopulateArcPolicyStatus(SystemLogsResponse* response);
  void PopulateOnboardingTime(SystemLogsResponse* response);
#endif  // BUILDFLAG(IS_CHROMEOS)

#if BUILDFLAG(IS_WIN)
  void PopulateEnrolledToDomain(SystemLogsResponse* response);
  void PopulateInstallerBrandCode(SystemLogsResponse* response);
#endif

#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
  void PopulateLastUpdateState(SystemLogsResponse* response);
#endif
};

}  // namespace system_logs

#endif  // CHROME_BROWSER_FEEDBACK_SYSTEM_LOGS_LOG_SOURCES_CHROME_INTERNAL_LOG_SOURCE_H_
