device_settings_cache.cc revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/chromeos/settings/device_settings_cache.h" 6 7#include <string> 8 9#include "base/base64.h" 10#include "base/bind.h" 11#include "base/prefs/pref_registry_simple.h" 12#include "base/prefs/pref_service.h" 13#include "chrome/browser/chromeos/settings/cros_settings.h" 14#include "chrome/common/pref_names.h" 15#include "policy/proto/device_management_backend.pb.h" 16 17namespace em = enterprise_management; 18 19namespace chromeos { 20 21namespace device_settings_cache { 22 23void RegisterPrefs(PrefRegistrySimple* registry) { 24 registry->RegisterStringPref(prefs::kDeviceSettingsCache, "invalid"); 25} 26 27bool Store(const em::PolicyData& policy, PrefService* local_state) { 28 if (local_state) { 29 std::string policy_string = policy.SerializeAsString(); 30 std::string encoded; 31 base::Base64Encode(policy_string, &encoded); 32 local_state->SetString(prefs::kDeviceSettingsCache, encoded); 33 return true; 34 } 35 return false; 36} 37 38bool Retrieve(em::PolicyData *policy, PrefService* local_state) { 39 if (local_state) { 40 std::string encoded = 41 local_state->GetString(prefs::kDeviceSettingsCache); 42 std::string policy_string; 43 if (!base::Base64Decode(encoded, &policy_string)) { 44 // This is normal and happens on first boot. 45 VLOG(1) << "Can't decode policy from base64."; 46 return false; 47 } 48 return policy->ParseFromString(policy_string); 49 } 50 return false; 51} 52 53} // namespace device_settings_cache 54 55} // namespace chromeos 56