| // 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 "ios/chrome/browser/policy/scoped_policy_list.h" |
| #import "ios/chrome/browser/policy/policy_earl_grey_utils.h" |
| |
| ScopedPolicyList::ScopedPolicyList() {} |
| |
| ScopedPolicyList::~ScopedPolicyList() { |
| Reset(); |
| } |
| |
| void ScopedPolicyList::SetPolicy(int value, const std::string& policy_key) { |
| // First check if this `policy` has been set using this object before. |
| // If not, store the current policy value before changing it. |
| const auto stored_original_value = |
| original_value_for_policy_.find(policy_key); |
| if (stored_original_value == original_value_for_policy_.end()) { |
| const auto original_value = |
| policy_test_utils::GetValueForPlatformPolicy(policy_key); |
| original_value_for_policy_.insert({policy_key, original_value}); |
| } |
| |
| policy_test_utils::SetPolicy(value, policy_key); |
| } |
| |
| void ScopedPolicyList::Reset() { |
| for (const auto& policy_key_value : original_value_for_policy_) { |
| const auto& policy_key = policy_key_value.first; |
| const auto& original_value = policy_key_value.second; |
| policy_test_utils::SetPolicy(original_value, policy_key); |
| } |
| } |