blob: 0c5fd1c6d313e26cc618cea5d003bbb282838297 [file] [log] [blame]
// Copyright 2018 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef POLICY_UTILS_POLICY_WRITER_H_
#define POLICY_UTILS_POLICY_WRITER_H_
#include <string>
#include <base/files/file_path.h>
#include <brillo/brillo_export.h>
namespace policy_utils {
// LibMgmt interface for writing local policy overrides.
// Calling Set<PolicyName>(value) generates a JSON file with name
// /etc/opt/chrome/policies/recommended/policy_name.json with content
// "{ 'PolicyName': value }". Chrome will automatically load the policy,
// effectively overriding the policy on the device.
class BRILLO_EXPORT PolicyWriter {
public:
// Creates a PolicyWriter that writes JSON policy-override files in the
// given directory. Leave |dest_dir_path| empty to use the recommended
// directory (/etc/opt/chrome/policies/recommended/). Using a directory other
// than recommended is only useful for testing.
explicit PolicyWriter(const std::string& dest_dir_path);
PolicyWriter(const PolicyWriter&) = delete;
PolicyWriter& operator=(const PolicyWriter&) = delete;
~PolicyWriter();
// Sets policy DeviceAllowBluetooth to value |is_allowed|. Returns whether
// successful.
bool SetDeviceAllowBluetooth(bool is_allowed) const;
bool SetShowHomeButton(bool show) const;
bool SetBookmarkBarEnabled(bool is_enabled) const;
// Clears local policy DeviceAllowBluetooth by deleting its local JSON file
// override if it exists. Returns whether successful.
bool ClearDeviceAllowBluetooth() const;
bool ClearShowHomeButton() const;
bool ClearBookmarkBarEnabled() const;
private:
// The path to the directory into which JSON policy files should be written.
base::FilePath dest_dir_path_;
};
} // namespace policy_utils
#endif // POLICY_UTILS_POLICY_WRITER_H_