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
|
// Copyright 2018 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_ASH_CHILD_ACCOUNTS_CHILD_STATUS_REPORTING_SERVICE_H_
#define CHROME_BROWSER_ASH_CHILD_ACCOUNTS_CHILD_STATUS_REPORTING_SERVICE_H_
#include <memory>
#include "base/memory/raw_ptr.h"
#include "base/time/time.h"
#include "components/keyed_service/core/keyed_service.h"
class PrefChangeRegistrar;
namespace content {
class BrowserContext;
} // namespace content
namespace policy {
class CloudPolicyClient;
class StatusUploader;
class UserCloudPolicyManagerAsh;
} // namespace policy
namespace ash {
// Controls reporting for child user.
// Child user should be registered with DMServer and periodically upload the
// information about the device usage. The reports are only sent during user's
// session and they do not interfere with enterprise reporting that is
// controlled by DeviceCloudPolicyManagerAsh.
class ChildStatusReportingService : public KeyedService {
public:
explicit ChildStatusReportingService(content::BrowserContext* context);
ChildStatusReportingService(const ChildStatusReportingService&) = delete;
ChildStatusReportingService& operator=(const ChildStatusReportingService&) =
delete;
~ChildStatusReportingService() override;
// Returns true if the status report has been scheduled. Otherwise, returns
// false.
virtual bool RequestImmediateStatusReport();
// Get the child's usage time so far today.
base::TimeDelta GetChildScreenTime() const;
private:
// Creates new status uploader if parameters changed.
void CreateStatusUploaderIfNeeded(policy::CloudPolicyClient* client);
// Called when the UsageTimeLimits policy changes.
void OnTimeLimitsPolicyChanged();
// Helper object that controls device status collection/storage and uploads
// gathered reports to the server.
std::unique_ptr<policy::StatusUploader> status_uploader_;
// Preference changes observer.
std::unique_ptr<PrefChangeRegistrar> pref_change_registrar_;
// Day start/reset time used for aggregating activity data for child status
// reporting.
base::TimeDelta day_reset_time_;
const raw_ptr<content::BrowserContext> context_;
raw_ptr<policy::UserCloudPolicyManagerAsh> user_cloud_policy_manager_;
};
} // namespace ash
#endif // CHROME_BROWSER_ASH_CHILD_ACCOUNTS_CHILD_STATUS_REPORTING_SERVICE_H_
|