// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/chrome/browser/feature_engagement/model/ios_tracker_session_controller.h"
#import "base/time/clock.h"
namespace {
const base::TimeDelta kMaxSessionDuration = base::Minutes(60);
}
BASE_FEATURE(kFeatureEngagementSessionReset,
"FeatureEngagementSessionReset",
base::FEATURE_ENABLED_BY_DEFAULT);
IOSTrackerSessionController::IOSTrackerSessionController(
raw_ptr<base::Clock> clock)
: clock_(clock),
session_start_time_(clock_->Now()),
max_session_duration_(kMaxSessionDuration) {}
IOSTrackerSessionController::~IOSTrackerSessionController() = default;
bool IOSTrackerSessionController::ShouldResetSession() {
if (!base::FeatureList::IsEnabled(kFeatureEngagementSessionReset)) {
return false;
}
const base::TimeDelta time_since_session_start =
clock_->Now() - session_start_time_;
if (time_since_session_start > max_session_duration_) {
session_start_time_ = clock_->Now();
return true;
}
return false;
}