chromium/ios/chrome/browser/policy/model/policy_app_interface.h

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_CHROME_BROWSER_POLICY_MODEL_POLICY_APP_INTERFACE_H_
#define IOS_CHROME_BROWSER_POLICY_MODEL_POLICY_APP_INTERFACE_H_

#import <Foundation/Foundation.h>

@interface PolicyAppInterface : NSObject

// Returns a JSON-encoded representation of the value for the given `policyKey`.
// Looks for the policy in the platform policy provider under the CHROME policy
// namespace.
+ (NSString*)valueForPlatformPolicy:(NSString*)policyKey;

// Sets the json policy corresponding to `policy_key` to the given json
// value, and removes previous policies.
+ (void)setPolicyValue:(NSString*)jsonValue forKey:(NSString*)policyKey;

// Merges the json policy corresponding to `policyKey` to the existing
// policies with its value sets to `jsonValue`.
+ (void)mergePolicyValue:(NSString*)jsonValue forKey:(NSString*)policyKey;

// Clear all policy values.
+ (void)clearPolicies;

// Clear the policies from all providers.
+ (void)clearAllPoliciesInNSUserDefault;

// Returns YES if the given `URL` is blocked by the URLBlocklist and
// URLAllowlist policies.
+ (BOOL)isURLBlocked:(NSString*)URL;

// Sets the browser cloud policy data with a domain.
+ (void)setBrowserCloudPolicyDataWithDomain:(NSString*)domain;

// Sets the user cloud policy data with a domain.
+ (void)setUserCloudPolicyDataWithDomain:(NSString*)domain;

// Removes the whole directory where the device management token file is stored.
//  Returns YES if succeeded. It is waiting for the disk operation to be
//  finished before returning the value.
+ (BOOL)clearDMTokenDirectory [[nodiscard]];

// Returns YES if the cloud policy client is registered.
+ (BOOL)isCloudPolicyClientRegistered;

// Removes the whole directory where the Chrome Browser Cloud Management (CBCM)
// stores data. Returns YES if succeeded. It is waiting for the disk operation
// to be finished before returning the value.
+ (BOOL)clearCloudPolicyDirectory [[nodiscard]];

// Returns YES if there is user policy data in the current BrowserState.
+ (BOOL)hasUserPolicyDataInCurrentBrowserState;

// Returns YES if in the user policy store of the current BrowserState the
// policy with name `policyName` and of type integer is set to `expectedValue`.
+ (BOOL)hasUserPolicyInCurrentBrowserState:(NSString*)policyName
                          withIntegerValue:(int)expectedValue;

@end

#endif  // IOS_CHROME_BROWSER_POLICY_MODEL_POLICY_APP_INTERFACE_H_