1 //
2 // Copyright (C) 2019 The Android Open Source Project
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //      http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 
17 #pragma once
18 
19 #include <memory>
20 
21 namespace android {
22 namespace fs_mgr {
23 
24 class IPropertyFetcher {
25   public:
26     virtual ~IPropertyFetcher() = default;
27     virtual std::string GetProperty(const std::string& key, const std::string& defaultValue) = 0;
28     virtual bool GetBoolProperty(const std::string& key, bool defaultValue) = 0;
29 
30     static IPropertyFetcher* GetInstance();
31     static void OverrideForTesting(std::unique_ptr<IPropertyFetcher>&&);
32 };
33 
34 class PropertyFetcher : public IPropertyFetcher {
35   public:
36     ~PropertyFetcher() = default;
37     std::string GetProperty(const std::string& key, const std::string& defaultValue) override;
38     bool GetBoolProperty(const std::string& key, bool defaultValue) override;
39 };
40 
41 }  // namespace fs_mgr
42 }  // namespace android
43