1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
// Copyright 2022 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_ENTERPRISE_BROWSER_REPORTING_CHROME_PROFILE_REQUEST_GENERATOR_H_
#define COMPONENTS_ENTERPRISE_BROWSER_REPORTING_CHROME_PROFILE_REQUEST_GENERATOR_H_
#include <memory>
#include <string>
#include "base/files/file_path.h"
#include "base/functional/callback_forward.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "components/device_signals/core/browser/signals_types.h"
#include "components/enterprise/browser/reporting/browser_report_generator.h"
#include "components/enterprise/browser/reporting/profile_report_generator.h"
#include "components/enterprise/browser/reporting/report_generation_config.h"
#include "components/enterprise/browser/reporting/report_request.h"
namespace device_signals {
class SignalsAggregator;
}
namespace enterprise_reporting {
class ReportingDelegateFactory;
// The top level generator that creates ChromeProfileRequest proto.
class ChromeProfileRequestGenerator {
public:
using ReportCallback = base::OnceCallback<void(ReportRequestQueue)>;
ChromeProfileRequestGenerator(
const base::FilePath& profile_path,
ReportingDelegateFactory* delegate_factory,
device_signals::SignalsAggregator* signals_aggregator = nullptr);
ChromeProfileRequestGenerator(const ChromeProfileRequestGenerator&) = delete;
ChromeProfileRequestGenerator& operator=(
const ChromeProfileRequestGenerator&) = delete;
virtual ~ChromeProfileRequestGenerator();
virtual void Generate(ReportGenerationConfig generation_config,
ReportCallback callback);
void ToggleExtensionReport(
ProfileReportGenerator::ExtensionsEnabledCallback callback);
private:
void OnBaseReportsReady(
std::unique_ptr<ReportRequest> request,
ReportCallback callback,
ReportGenerationConfig generation_config,
std::unique_ptr<enterprise_management::BrowserReport> browser_report,
std::unique_ptr<enterprise_management::ChromeUserProfileInfo>
profile_report);
void OnAggregatedSignalsReceived(
std::unique_ptr<ReportRequest> request,
ReportCallback callback,
std::unique_ptr<enterprise_management::BrowserReport> browser_report,
std::unique_ptr<enterprise_management::ChromeUserProfileInfo>
profile_report,
device_signals::SignalsAggregationResponse response);
void OnRequestReady(std::unique_ptr<ReportRequest> request,
ReportCallback callback);
const base::FilePath profile_path_;
BrowserReportGenerator browser_report_generator_;
ProfileReportGenerator profile_report_generator_;
raw_ptr<device_signals::SignalsAggregator> signals_aggregator_;
base::WeakPtrFactory<ChromeProfileRequestGenerator> weak_ptr_factory_{this};
};
} // namespace enterprise_reporting
#endif // COMPONENTS_ENTERPRISE_BROWSER_REPORTING_CHROME_PROFILE_REQUEST_GENERATOR_H_
|