1 // Copyright 2018 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CHROMEOS_COMPONENTS_TETHER_TEST_TIMER_FACTORY_H_
6 #define CHROMEOS_COMPONENTS_TETHER_TEST_TIMER_FACTORY_H_
7 
8 #include <memory>
9 #include <string>
10 
11 #include "base/containers/flat_map.h"
12 #include "base/timer/mock_timer.h"
13 #include "base/timer/timer.h"
14 #include "chromeos/components/tether/timer_factory.h"
15 
16 namespace chromeos {
17 namespace tether {
18 
19 class TestTimerFactory : public TimerFactory {
20  public:
21   TestTimerFactory();
22   ~TestTimerFactory() override;
23 
24   // TimerFactory:
25   std::unique_ptr<base::OneShotTimer> CreateOneShotTimer() override;
26 
set_device_id_for_next_timer(const std::string & device_id_for_next_timer)27   void set_device_id_for_next_timer(
28       const std::string& device_id_for_next_timer) {
29     device_id_for_next_timer_ = device_id_for_next_timer;
30   }
31 
GetTimerForDeviceId(const std::string & device_id)32   base::MockOneShotTimer* GetTimerForDeviceId(const std::string& device_id) {
33     return device_id_to_timer_map_[device_id_for_next_timer_];
34   }
35 
ClearTimerForDeviceId(const std::string & device_id)36   void ClearTimerForDeviceId(const std::string& device_id) {
37     device_id_to_timer_map_.erase(device_id_for_next_timer_);
38   }
39 
40  private:
41   std::string device_id_for_next_timer_;
42   base::flat_map<std::string, base::MockOneShotTimer*> device_id_to_timer_map_;
43 };
44 
45 }  // namespace tether
46 }  // namespace chromeos
47 
48 #endif  // CHROMEOS_COMPONENTS_TETHER_TEST_TIMER_FACTORY_H_