|  | // Copyright 2014 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. | 
|  |  | 
|  | #include "buffet/storage_impls.h" | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | #include <base/files/important_file_writer.h> | 
|  | #include <base/json/json_reader.h> | 
|  | #include <base/json/json_writer.h> | 
|  |  | 
|  | namespace buffet { | 
|  |  | 
|  | FileStorage::FileStorage(const base::FilePath& file_path) | 
|  | : file_path_(file_path) { } | 
|  |  | 
|  | std::unique_ptr<base::Value> FileStorage::Load() { | 
|  | std::string json; | 
|  | if (!base::ReadFileToString(file_path_, &json)) | 
|  | return std::unique_ptr<base::Value>(); | 
|  |  | 
|  | return std::unique_ptr<base::Value>(base::JSONReader::Read(json)); | 
|  | } | 
|  |  | 
|  | bool FileStorage::Save(const base::Value* config) { | 
|  | std::string json; | 
|  | base::JSONWriter::WriteWithOptions( | 
|  | config, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json); | 
|  | return base::ImportantFileWriter::WriteFileAtomically(file_path_, json); | 
|  | } | 
|  |  | 
|  |  | 
|  | std::unique_ptr<base::Value> MemStorage::Load() { | 
|  | return std::unique_ptr<base::Value>(cache_->DeepCopy()); | 
|  | } | 
|  |  | 
|  | bool MemStorage::Save(const base::Value* config) { | 
|  | cache_.reset(config->DeepCopy()); | 
|  | ++save_count_; | 
|  | return true; | 
|  | } | 
|  |  | 
|  | }  // namespace buffet |