blob: 35b4a342322faf532a0e71f2c8571d4ce99ff888 [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.
#include "chrome/browser/policy/status_provider/user_cloud_policy_status_provider.h"
#include "base/values.h"
#include "chrome/browser/policy/status_provider/status_provider_util.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/signin/identity_manager_factory.h"
#include "components/policy/core/browser/webui/policy_status_provider.h"
#include "components/policy/core/common/cloud/cloud_policy_core.h"
#include "components/policy/core/common/cloud/cloud_policy_store.h"
#include "components/signin/public/identity_manager/identity_manager.h"
UserCloudPolicyStatusProvider::UserCloudPolicyStatusProvider(
policy::CloudPolicyCore* core,
Profile* profile)
: CloudPolicyCoreStatusProvider(core), profile_(profile) {}
UserCloudPolicyStatusProvider::~UserCloudPolicyStatusProvider() = default;
base::Value::Dict UserCloudPolicyStatusProvider::GetStatus() {
signin::IdentityManager* identity_manager =
IdentityManagerFactory::GetForProfile(profile_);
const bool is_flex_org =
identity_manager && identity_manager
->FindExtendedAccountInfoByEmailAddress(
profile_->GetProfileUserName())
.IsMemberOfFlexOrg();
if (!is_flex_org && !core_->store()->is_managed()) {
return {};
}
base::Value::Dict dict =
policy::PolicyStatusProvider::GetStatusFromCore(core_);
ExtractDomainFromUsername(&dict);
GetUserAffiliationStatus(&dict, profile_);
dict.Set(policy::kPolicyDescriptionKey, kUserPolicyStatusDescription);
dict.Set(policy::kFlexOrgWarningKey, is_flex_org);
SetDomainInUserStatus(dict);
SetProfileId(&dict, profile_);
return dict;
}