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 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
// 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.
#include "chrome/browser/policy/messaging_layer/util/manual_test_heartbeat_event.h"
#include <memory>
#include "base/check_op.h"
#include "base/feature_list.h"
#include "base/functional/callback.h"
#include "base/logging.h"
#include "base/task/sequenced_task_runner.h"
#include "base/task/thread_pool.h"
#include "base/time/time.h"
#include "build/build_config.h"
#include "chrome/browser/policy/messaging_layer/util/report_queue_manual_test_context.h"
#include "components/reporting/client/report_queue_configuration.h"
#include "components/reporting/proto/synced/record_constants.pb.h"
#include "components/reporting/util/status.h"
#include "components/reporting/util/task_runner_context.h"
namespace reporting {
namespace {
// Device heartbeat event.
BASE_FEATURE(kEncryptedReportingManualTestHeartbeatEvent,
"EncryptedReportingManualTestHeartbeatEvent",
base::FEATURE_DISABLED_BY_DEFAULT);
} // namespace
ManualTestHeartbeatEvent::ManualTestHeartbeatEvent() {
#if BUILDFLAG(IS_CHROMEOS)
managed_session_service_ = std::make_unique<policy::ManagedSessionService>();
CHECK(managed_session_service_);
managed_session_observation_.Observe(managed_session_service_.get());
#endif // BUILDFLAG(IS_CHROMEOS)
StartHeartbeatEvent();
}
ManualTestHeartbeatEvent::~ManualTestHeartbeatEvent() {
Shutdown();
}
void ManualTestHeartbeatEvent::Shutdown() {}
void ManualTestHeartbeatEvent::StartHeartbeatEvent() const {
// Device heartbeat
if (base::FeatureList::IsEnabled(
kEncryptedReportingManualTestHeartbeatEvent)) {
Start<ReportQueueManualTestContext>(
/*period=*/base::Seconds(1),
/*number_of_messages_to_enqueue=*/10,
/*destination=*/HEARTBEAT_EVENTS,
/*priority=*/FAST_BATCH, EventType::kDevice,
base::BindOnce([](Status status) {
LOG(WARNING) << "Heartbeat Event completed with status: " << status;
}),
base::ThreadPool::CreateSequencedTaskRunner(
{base::TaskPriority::BEST_EFFORT, base::MayBlock()}));
}
}
#if BUILDFLAG(IS_CHROMEOS)
namespace {
// User heartbeat event.
BASE_FEATURE(kEncryptedReportingManualTestUserHeartbeatEvent,
"EncryptedReportingManualTestUserHeartbeatEvent",
base::FEATURE_DISABLED_BY_DEFAULT);
} // namespace
// Enqueues a 10 heartbeat events with `EventType::kUser` upon login.
void ManualTestHeartbeatEvent::OnLogin(Profile* profile) {
managed_session_observation_.Reset();
CHECK_NE(profile, nullptr);
if (base::FeatureList::IsEnabled(
kEncryptedReportingManualTestUserHeartbeatEvent)) {
Start<ReportQueueManualTestContext>(
/*period=*/base::Seconds(1),
/*number_of_messages_to_enqueue=*/10,
/*destination=*/HEARTBEAT_EVENTS,
/*priority=*/FAST_BATCH, EventType::kUser,
base::BindOnce([](Status status) {
LOG(WARNING) << "Heartbeat Event completed with status: " << status;
}),
base::ThreadPool::CreateSequencedTaskRunner(
{base::TaskPriority::BEST_EFFORT, base::MayBlock()}));
}
}
#endif // BUILDFLAG(IS_CHROMEOS)
} // namespace reporting
|