|  | // 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. | 
|  |  | 
|  | #ifndef BUFFET_STORAGE_INTERFACE_H_ | 
|  | #define BUFFET_STORAGE_INTERFACE_H_ | 
|  |  | 
|  | #include <memory> | 
|  |  | 
|  | #include <base/values.h> | 
|  |  | 
|  | namespace buffet { | 
|  |  | 
|  | // We need to persist data in a couple places, and it is convenient to hide | 
|  | // the details of this storage behind an interface for test purposes. | 
|  | class StorageInterface { | 
|  | public: | 
|  | // Load the device registration configuration from storage. | 
|  | // If it fails (e.g. the storage container [file?] doesn't exist), then | 
|  | // it returns empty unique_ptr (aka nullptr). | 
|  | virtual std::unique_ptr<base::Value> Load() = 0; | 
|  |  | 
|  | // Save the device registration configuration to storage. | 
|  | // If saved successfully, returns true. Could fail when writing to | 
|  | // physical storage like file system for various reasons (out of disk space, | 
|  | // access permissions, etc). | 
|  | virtual bool Save(const base::Value* config) = 0; | 
|  | }; | 
|  |  | 
|  | }  // namespace buffet | 
|  |  | 
|  | #endif  // BUFFET_STORAGE_INTERFACE_H_ |