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
|
// 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.
#include "chromeos/ash/components/demo_mode/utils/demo_session_utils.h"
#include "ash/constants/ash_features.h"
#include "ash/constants/ash_pref_names.h"
#include "chromeos/ash/components/install_attributes/install_attributes.h"
#include "chromeos/dbus/power/power_policy_controller.h"
#include "components/prefs/pref_registry_simple.h"
namespace ash::demo_mode {
namespace {
bool g_force_enable_demo_account_sign_in = false;
bool g_should_schedule_logout_for_mgs = false;
bool g_is_24h_session_enabled = false;
}
bool IsDeviceInDemoMode() {
if (!InstallAttributes::IsInitialized()) {
// TODO(b/281905036): Add a log to indicate that the install
// attributes haven't been initialized yet.
return false;
}
return InstallAttributes::Get()->IsDeviceInDemoMode();
}
void RegisterLocalStatePrefs(PrefRegistrySimple* registry) {
// Demo session prefs:
registry->RegisterStringPref(prefs::kDemoModeDefaultLocale, std::string());
registry->RegisterStringPref(prefs::kDemoModeCountry, kSupportedCountries[0]);
registry->RegisterStringPref(prefs::kDemoModeRetailerId, std::string());
registry->RegisterStringPref(prefs::kDemoModeStoreId, std::string());
registry->RegisterStringPref(prefs::kDemoModeAppVersion, std::string());
registry->RegisterStringPref(prefs::kDemoModeResourcesVersion, std::string());
// TODO(crbugs.com/366092466): Use DemoSession::DemoModeConfig::kNone once
// finishes refactoring. Demo mode setup controller prefs:
registry->RegisterIntegerPref(prefs::kDemoModeConfig, 0);
// Demo login controller prefs:
registry->RegisterStringPref(prefs::kDemoAccountGaiaId, std::string());
registry->RegisterStringPref(prefs::kDemoModeSessionIdentifier,
std::string());
}
void SetForceEnableDemoAccountSignIn(bool force_enabled) {
g_force_enable_demo_account_sign_in = force_enabled;
}
bool IsDemoAccountSignInEnabled() {
return IsDeviceInDemoMode() && (features::IsDemoModeSignInEnabled() ||
g_force_enable_demo_account_sign_in);
}
void SetDoNothingWhenPowerIdle() {
chromeos::PowerPolicyController::Get()
->SetShouldDoNothingWhenIdleInDemoMode();
g_is_24h_session_enabled = true;
}
bool ForceSessionLengthCountFromSessionStarts() {
return g_is_24h_session_enabled;
}
void TurnOnScheduleLogoutForMGS() {
g_should_schedule_logout_for_mgs = true;
}
bool GetShouldScheduleLogoutForMGS() {
return g_should_schedule_logout_for_mgs;
}
} // namespace ash::demo_mode
|