chromium/ios/chrome/browser/policy/model/reporting/browser_report_generator_ios.h

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

#ifndef IOS_CHROME_BROWSER_POLICY_MODEL_REPORTING_BROWSER_REPORT_GENERATOR_IOS_H_
#define IOS_CHROME_BROWSER_POLICY_MODEL_REPORTING_BROWSER_REPORT_GENERATOR_IOS_H_

#include "components/enterprise/browser/reporting/browser_report_generator.h"

#include <memory>

#include "base/functional/callback.h"
#include "components/version_info/channel.h"

namespace enterprise_management {
class BrowserReport;
}  // namespace enterprise_management

namespace enterprise_reporting {

// iOS implementation of platform-specific info fetching for Enterprise browser
// report generation.
class BrowserReportGeneratorIOS : public BrowserReportGenerator::Delegate {
 public:
  using ReportCallback = base::OnceCallback<void(
      std::unique_ptr<enterprise_management::BrowserReport>)>;

  BrowserReportGeneratorIOS();
  BrowserReportGeneratorIOS(const BrowserReportGeneratorIOS&) = delete;
  BrowserReportGeneratorIOS& operator=(const BrowserReportGeneratorIOS&) =
      delete;
  ~BrowserReportGeneratorIOS() override;

  // BrowserReportGenerator::Delegate implementation.
  std::string GetExecutablePath() override;
  version_info::Channel GetChannel() override;
  std::vector<BrowserReportGenerator::ReportedProfileData> GetReportedProfiles()
      override;
  bool IsExtendedStableChannel() override;
  void GenerateBuildStateInfo(
      enterprise_management::BrowserReport* report) override;
};

}  // namespace enterprise_reporting

#endif  // IOS_CHROME_BROWSER_POLICY_MODEL_REPORTING_BROWSER_REPORT_GENERATOR_IOS_H_