1 //
2 // Copyright (C) 2013 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 #ifndef UPDATE_ENGINE_FAKE_P2P_MANAGER_H_
18 #define UPDATE_ENGINE_FAKE_P2P_MANAGER_H_
19 
20 #include <string>
21 
22 #include "update_engine/p2p_manager.h"
23 
24 namespace chromeos_update_engine {
25 
26 // A fake implementation of P2PManager.
27 class FakeP2PManager : public P2PManager {
28  public:
29   FakeP2PManager()
30       : is_p2p_enabled_(false),
31         ensure_p2p_running_result_(false),
32         ensure_p2p_not_running_result_(false),
33         perform_housekeeping_result_(false),
34         count_shared_files_result_(0) {}
35 
36   // P2PManager overrides.
37   void SetDevicePolicy(const policy::DevicePolicy* device_policy) override {}
38 
39   bool IsP2PEnabled() override { return is_p2p_enabled_; }
40 
41   bool EnsureP2PRunning() override { return ensure_p2p_running_result_; }
42 
43   bool EnsureP2PNotRunning() override { return ensure_p2p_not_running_result_; }
44 
45   bool PerformHousekeeping() override { return perform_housekeeping_result_; }
46 
47   void LookupUrlForFile(const std::string& file_id,
48                         size_t minimum_size,
49                         base::TimeDelta max_time_to_wait,
50                         LookupCallback callback) override {
51     callback.Run(lookup_url_for_file_result_);
52   }
53 
54   bool FileShare(const std::string& file_id, size_t expected_size) override {
55     return false;
56   }
57 
58   base::FilePath FileGetPath(const std::string& file_id) override {
59     return base::FilePath();
60   }
61 
62   ssize_t FileGetSize(const std::string& file_id) override { return -1; }
63 
64   ssize_t FileGetExpectedSize(const std::string& file_id) override {
65     return -1;
66   }
67 
68   bool FileGetVisible(const std::string& file_id, bool* out_result) override {
69     return false;
70   }
71 
72   bool FileMakeVisible(const std::string& file_id) override { return false; }
73 
74   int CountSharedFiles() override { return count_shared_files_result_; }
75 
76   // Methods for controlling what the fake returns and how it acts.
77   void SetP2PEnabled(bool is_p2p_enabled) { is_p2p_enabled_ = is_p2p_enabled; }
78 
79   void SetEnsureP2PRunningResult(bool ensure_p2p_running_result) {
80     ensure_p2p_running_result_ = ensure_p2p_running_result;
81   }
82 
83   void SetEnsureP2PNotRunningResult(bool ensure_p2p_not_running_result) {
84     ensure_p2p_not_running_result_ = ensure_p2p_not_running_result;
85   }
86 
87   void SetPerformHousekeepingResult(bool perform_housekeeping_result) {
88     perform_housekeeping_result_ = perform_housekeeping_result;
89   }
90 
91   void SetCountSharedFilesResult(int count_shared_files_result) {
92     count_shared_files_result_ = count_shared_files_result;
93   }
94 
95   void SetLookupUrlForFileResult(const std::string& url) {
96     lookup_url_for_file_result_ = url;
97   }
98 
99  private:
100   bool is_p2p_enabled_;
101   bool ensure_p2p_running_result_;
102   bool ensure_p2p_not_running_result_;
103   bool perform_housekeeping_result_;
104   int count_shared_files_result_;
105   std::string lookup_url_for_file_result_;
106 
107   DISALLOW_COPY_AND_ASSIGN(FakeP2PManager);
108 };
109 
110 }  // namespace chromeos_update_engine
111 
112 #endif  // UPDATE_ENGINE_FAKE_P2P_MANAGER_H_
113