1 // Copyright 2020 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef IOS_CHROME_BROWSER_POLICY_REPORTING_BROWSER_REPORT_GENERATOR_IOS_H_
6 #define IOS_CHROME_BROWSER_POLICY_REPORTING_BROWSER_REPORT_GENERATOR_IOS_H_
7 
8 #include "components/enterprise/browser/reporting/browser_report_generator.h"
9 
10 #include <memory>
11 
12 #include "base/callback.h"
13 #include "components/policy/proto/device_management_backend.pb.h"
14 #include "components/version_info/channel.h"
15 
16 namespace em = ::enterprise_management;
17 
18 namespace enterprise_reporting {
19 
20 // iOS implementation of platform-specific info fetching for Enterprise browser
21 // report generation.
22 class BrowserReportGeneratorIOS : public BrowserReportGenerator::Delegate {
23  public:
24   using ReportCallback = base::OnceCallback<void(
25       std::unique_ptr<enterprise_management::BrowserReport>)>;
26 
27   BrowserReportGeneratorIOS();
28   BrowserReportGeneratorIOS(const BrowserReportGeneratorIOS&) = delete;
29   BrowserReportGeneratorIOS& operator=(const BrowserReportGeneratorIOS&) =
30       delete;
31   ~BrowserReportGeneratorIOS() override;
32 
33   // BrowserReportGenerator::Delegate implementation.
34   std::string GetExecutablePath() override;
35   version_info::Channel GetChannel() override;
36   void GenerateBuildStateInfo(em::BrowserReport* report) override;
37   void GenerateProfileInfo(ReportType report_type,
38                            em::BrowserReport* report) override;
39   void GeneratePluginsIfNeeded(
40       ReportCallback callback,
41       std::unique_ptr<em::BrowserReport> report) override;
42 };
43 
44 }  // namespace enterprise_reporting
45 
46 #endif  // IOS_CHROME_BROWSER_POLICY_REPORTING_BROWSER_REPORT_GENERATOR_IOS_H_
47