| // Copyright (c) 2013 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 MIST_CONFIG_LOADER_H_ |
| #define MIST_CONFIG_LOADER_H_ |
| |
| #include <stdint.h> |
| |
| #include <memory> |
| |
| #include <base/files/file_path.h> |
| #include <base/macros.h> |
| #include <gtest/gtest_prod.h> |
| |
| namespace mist { |
| |
| class Config; |
| class UsbModemInfo; |
| |
| // A configuration file loader, which loads information about USB modems |
| // supported by mist from a configuration file based on the text format of |
| // protocol buffers. The protocol buffers for the configuration file are defined |
| // in proto/*.proto. |
| class ConfigLoader { |
| public: |
| ConfigLoader(); |
| virtual ~ConfigLoader(); |
| |
| // Loads the default configuration. Returns true on success. |
| virtual bool LoadDefaultConfig(); |
| |
| // Loads a configuration from |config_file|. Returns true on success. |
| virtual bool LoadConfig(const base::FilePath& config_file); |
| |
| // Returns the info of the USB modem with its vendor ID equal to |vendor_id| |
| // and its product ID equal to |product_id| from the loaded configuration. |
| // Returns NULL if no matching USB modem is found. The returned UsbModemInfo |
| // object becomes invalid, and thus should not be held, beyond the lifetime |
| // of the loaded configuration held by |config_|. |
| virtual const UsbModemInfo* GetUsbModemInfo(uint16_t vendor_id, |
| uint16_t product_id) const; |
| |
| private: |
| FRIEND_TEST(ConfigLoaderTest, GetUsbModemInfo); |
| FRIEND_TEST(ConfigLoaderTest, LoadEmptyConfigFile); |
| FRIEND_TEST(ConfigLoaderTest, LoadInvalidConfigFile); |
| FRIEND_TEST(ConfigLoaderTest, LoadNonExistentConfigFile); |
| FRIEND_TEST(ConfigLoaderTest, LoadValidConfigFile); |
| |
| std::unique_ptr<Config> config_; |
| |
| DISALLOW_COPY_AND_ASSIGN(ConfigLoader); |
| }; |
| |
| } // namespace mist |
| |
| #endif // MIST_CONFIG_LOADER_H_ |