1 // Copyright 2020 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 #include "chrome/browser/nearby_sharing/scheduling/nearby_share_scheduler_factory.h"
6
7 #include <utility>
8
9 #include "chrome/browser/nearby_sharing/scheduling/nearby_share_on_demand_scheduler.h"
10 #include "chrome/browser/nearby_sharing/scheduling/nearby_share_periodic_scheduler.h"
11
12 // static
13 NearbyShareSchedulerFactory* NearbyShareSchedulerFactory::test_factory_ =
14 nullptr;
15
16 // static
17 std::unique_ptr<NearbyShareScheduler>
CreateExpirationScheduler(NearbyShareExpirationScheduler::ExpirationTimeFunctor expiration_time_functor,bool retry_failures,bool require_connectivity,const std::string & pref_name,PrefService * pref_service,NearbyShareScheduler::OnRequestCallback on_request_callback,const base::Clock * clock)18 NearbyShareSchedulerFactory::CreateExpirationScheduler(
19 NearbyShareExpirationScheduler::ExpirationTimeFunctor
20 expiration_time_functor,
21 bool retry_failures,
22 bool require_connectivity,
23 const std::string& pref_name,
24 PrefService* pref_service,
25 NearbyShareScheduler::OnRequestCallback on_request_callback,
26 const base::Clock* clock) {
27 if (test_factory_) {
28 return test_factory_->CreateExpirationSchedulerInstance(
29 std::move(expiration_time_functor), retry_failures,
30 require_connectivity, pref_name, pref_service,
31 std::move(on_request_callback), clock);
32 }
33
34 return std::make_unique<NearbyShareExpirationScheduler>(
35 std::move(expiration_time_functor), retry_failures, require_connectivity,
36 pref_name, pref_service, std::move(on_request_callback), clock);
37 }
38
39 // static
40 std::unique_ptr<NearbyShareScheduler>
CreateOnDemandScheduler(bool retry_failures,bool require_connectivity,const std::string & pref_name,PrefService * pref_service,NearbyShareScheduler::OnRequestCallback callback,const base::Clock * clock)41 NearbyShareSchedulerFactory::CreateOnDemandScheduler(
42 bool retry_failures,
43 bool require_connectivity,
44 const std::string& pref_name,
45 PrefService* pref_service,
46 NearbyShareScheduler::OnRequestCallback callback,
47 const base::Clock* clock) {
48 if (test_factory_) {
49 return test_factory_->CreateOnDemandSchedulerInstance(
50 retry_failures, require_connectivity, pref_name, pref_service,
51 std::move(callback), clock);
52 }
53
54 return std::make_unique<NearbyShareOnDemandScheduler>(
55 retry_failures, require_connectivity, pref_name, pref_service,
56 std::move(callback), clock);
57 }
58
59 // static
60 std::unique_ptr<NearbyShareScheduler>
CreatePeriodicScheduler(base::TimeDelta request_period,bool retry_failures,bool require_connectivity,const std::string & pref_name,PrefService * pref_service,NearbyShareScheduler::OnRequestCallback callback,const base::Clock * clock)61 NearbyShareSchedulerFactory::CreatePeriodicScheduler(
62 base::TimeDelta request_period,
63 bool retry_failures,
64 bool require_connectivity,
65 const std::string& pref_name,
66 PrefService* pref_service,
67 NearbyShareScheduler::OnRequestCallback callback,
68 const base::Clock* clock) {
69 if (test_factory_) {
70 return test_factory_->CreatePeriodicSchedulerInstance(
71 request_period, retry_failures, require_connectivity, pref_name,
72 pref_service, std::move(callback), clock);
73 }
74
75 return std::make_unique<NearbySharePeriodicScheduler>(
76 request_period, retry_failures, require_connectivity, pref_name,
77 pref_service, std::move(callback), clock);
78 }
79
80 // static
SetFactoryForTesting(NearbyShareSchedulerFactory * test_factory)81 void NearbyShareSchedulerFactory::SetFactoryForTesting(
82 NearbyShareSchedulerFactory* test_factory) {
83 test_factory_ = test_factory;
84 }
85
86 NearbyShareSchedulerFactory::~NearbyShareSchedulerFactory() = default;
87