123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- // Copyright 2020 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "components/permissions/permission_auditing_service.h"
- #include "base/bind.h"
- #include "base/callback.h"
- #include "base/files/file_util.h"
- #include "components/permissions/permission_auditing_database.h"
- namespace {
- // Specifies the permissions usage session lifetime. Each session older
- // than this value is to be deleted.
- constexpr base::TimeDelta kUsageSessionMaxAge = base::Days(90);
- // Specifies the time period between the regular sessions deletions.
- constexpr base::TimeDelta kUsageSessionCullingInterval = base::Minutes(30);
- } // namespace
- namespace permissions {
- PermissionAuditingService::PermissionAuditingService(
- scoped_refptr<base::SequencedTaskRunner> backend_task_runner)
- : backend_task_runner_(backend_task_runner) {}
- PermissionAuditingService::~PermissionAuditingService() {
- if (db_) {
- backend_task_runner_->DeleteSoon(FROM_HERE, db_.get());
- db_ = nullptr;
- }
- }
- void PermissionAuditingService::Init(const base::FilePath& database_path) {
- DCHECK(!db_);
- db_ = new PermissionAuditingDatabase();
- backend_task_runner_->PostTask(
- FROM_HERE,
- base::BindOnce(base::IgnoreResult(&PermissionAuditingDatabase::Init),
- base::Unretained(db_), database_path));
- }
- void PermissionAuditingService::StartPeriodicCullingOfExpiredSessions() {
- timer_.Start(
- FROM_HERE, kUsageSessionCullingInterval,
- base::BindRepeating(&PermissionAuditingService::ExpireOldSessions,
- this->AsWeakPtr()));
- }
- void PermissionAuditingService::StorePermissionUsage(
- const PermissionUsageSession& session) {
- DCHECK(db_);
- backend_task_runner_->PostTask(
- FROM_HERE,
- base::BindOnce(
- base::IgnoreResult(&PermissionAuditingDatabase::StorePermissionUsage),
- base::Unretained(db_), session));
- }
- void PermissionAuditingService::GetPermissionUsageHistory(
- ContentSettingsType type,
- const url::Origin& origin,
- base::Time start_time,
- PermissionUsageHistoryCallback result_callback) {
- DCHECK(db_);
- backend_task_runner_->PostTaskAndReplyWithResult(
- FROM_HERE,
- base::BindOnce(&PermissionAuditingDatabase::GetPermissionUsageHistory,
- base::Unretained(db_), type, origin, start_time),
- std::move(result_callback));
- }
- void PermissionAuditingService::GetLastPermissionUsageTime(
- ContentSettingsType type,
- const url::Origin& origin,
- LastPermissionUsageTimeCallback result_callback) {
- DCHECK(db_);
- backend_task_runner_->PostTaskAndReplyWithResult(
- FROM_HERE,
- base::BindOnce(&PermissionAuditingDatabase::GetLastPermissionUsageTime,
- base::Unretained(db_), type, origin),
- std::move(result_callback));
- }
- void PermissionAuditingService::UpdateEndTime(ContentSettingsType type,
- const url::Origin& origin,
- base::Time start_time,
- base::Time new_end_time) {
- DCHECK(db_);
- backend_task_runner_->PostTask(
- FROM_HERE,
- base::BindOnce(
- base::IgnoreResult(&PermissionAuditingDatabase::UpdateEndTime),
- base::Unretained(db_), type, origin, start_time, new_end_time));
- }
- void PermissionAuditingService::DeleteSessionsBetween(base::Time start,
- base::Time end) {
- DCHECK(db_);
- backend_task_runner_->PostTask(
- FROM_HERE,
- base::BindOnce(base::IgnoreResult(
- &PermissionAuditingDatabase::DeleteSessionsBetween),
- base::Unretained(db_), start, end));
- }
- void PermissionAuditingService::ExpireOldSessions() {
- DCHECK(db_);
- backend_task_runner_->PostTask(
- FROM_HERE,
- base::BindOnce(base::IgnoreResult(
- &PermissionAuditingDatabase::DeleteSessionsBetween),
- base::Unretained(db_), base::Time(),
- base::Time::Now() - kUsageSessionMaxAge));
- }
- // static
- base::TimeDelta PermissionAuditingService::GetUsageSessionMaxAge() {
- return kUsageSessionMaxAge;
- }
- // static
- base::TimeDelta PermissionAuditingService::GetUsageSessionCullingInterval() {
- return kUsageSessionCullingInterval;
- }
- } // namespace permissions
|