blob: 24998999c023c6933fe900e7601d522ea10a5f12 [file] [log] [blame]
// 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.
#ifndef CHROME_BROWSER_ASH_ARC_POLICY_MANAGED_CONFIGURATION_VARIABLES_H_
#define CHROME_BROWSER_ASH_ARC_POLICY_MANAGED_CONFIGURATION_VARIABLES_H_
#include "base/values.h"
#include "chrome/browser/ash/policy/core/device_attributes.h"
#include "chrome/browser/profiles/profile.h"
namespace arc {
extern const char kUserEmail[];
extern const char kUserEmailName[];
extern const char kUserEmailDomain[];
extern const char kDeviceDirectoryId[];
extern const char kDeviceSerialNumber[];
extern const char kDeviceAssetId[];
extern const char kDeviceAnnotatedLocation[];
// Replace the supported "template variables" for the managed configuration of
// Android apps in ARC++ from the given |managedConfiguration| dictionary.
//
// Supported template variables:
// * ${USER_EMAIL} - Email address of the primary signed in user.
// * ${USER_EMAIL_NAME} - Part before "@" of the user email address.
// * ${USER_EMAIL_DOMAIN} - Domain name of the user email address.
// * ${DEVICE_DIRECTORY_ID} - Device directory ID.
// * ${DEVICE_SERIAL_NUMBER} - Device serial number.
// * ${DEVICE_ASSET_ID} - Asset ID assigned by administrator.
// * ${DEVICE_ANNOTATED_LOCATION} - Location assigned by administrator.
//
// DEVICE_* variables are treated as absent for non-affiliated users.
//
// Variables can be chained by ":" to indicate fallback variables to be used
// when values are absent. In other words, a variable chain is replaced by the
// first value in the chain that is not empty.
//
// For example, given the variable chain "${DEVICE_ASSET_ID:USER_EMAIL}", it
// resolves to the asset ID if it is present, otherwise it resolves to the email
// of the current signed in user.
//
// Note chains containing unknown variables are considered malformed and will
// not be processed.
void RecursivelyReplaceManagedConfigurationVariables(
const Profile* profile,
base::Value* managedConfiguration);
void RecursivelyReplaceManagedConfigurationVariables(
const Profile* profile,
policy::DeviceAttributes* attributes,
base::Value* managedConfiguration);
} // namespace arc
#endif // CHROME_BROWSER_ASH_ARC_POLICY_MANAGED_CONFIGURATION_VARIABLES_H_