blob: 699ff4e921b99e6dac7ad53dbf92ab1560fa61a8 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/nearby_sharing/scheduling/fake_nearby_share_scheduler_factory.h"
#include <utility>
FakeNearbyShareSchedulerFactory::ExpirationInstance::ExpirationInstance() =
default;
FakeNearbyShareSchedulerFactory::ExpirationInstance::~ExpirationInstance() =
default;
FakeNearbyShareSchedulerFactory::FakeNearbyShareSchedulerFactory() = default;
FakeNearbyShareSchedulerFactory::~FakeNearbyShareSchedulerFactory() = default;
std::unique_ptr<NearbyShareScheduler>
FakeNearbyShareSchedulerFactory::CreateExpirationSchedulerInstance(
NearbyShareExpirationScheduler::ExpirationTimeCallback
expiration_time_callback,
bool retry_failures,
bool require_connectivity,
const std::string& pref_name,
PrefService* pref_service,
NearbyShareScheduler::OnRequestCallback on_request_callback,
const base::Clock* clock) {
ExpirationInstance instance;
instance.expiration_time_callback = std::move(expiration_time_callback);
instance.retry_failures = retry_failures;
instance.require_connectivity = require_connectivity;
instance.pref_service = pref_service;
instance.clock = clock;
auto scheduler = std::make_unique<FakeNearbyShareScheduler>(
std::move(on_request_callback));
instance.fake_scheduler = scheduler.get();
return scheduler;
}
std::unique_ptr<NearbyShareScheduler>
FakeNearbyShareSchedulerFactory::CreateOnDemandSchedulerInstance(
bool retry_failures,
bool require_connectivity,
const std::string& pref_name,
PrefService* pref_service,
NearbyShareScheduler::OnRequestCallback callback,
const base::Clock* clock) {
OnDemandInstance instance;
instance.retry_failures = retry_failures;
instance.require_connectivity = require_connectivity;
instance.pref_service = pref_service;
instance.clock = clock;
auto scheduler =
std::make_unique<FakeNearbyShareScheduler>(std::move(callback));
instance.fake_scheduler = scheduler.get();
pref_name_to_on_demand_instance_.insert_or_assign(pref_name, instance);
return scheduler;
}
std::unique_ptr<NearbyShareScheduler>
FakeNearbyShareSchedulerFactory::CreatePeriodicSchedulerInstance(
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) {
PeriodicInstance instance;
instance.request_period = request_period;
instance.retry_failures = retry_failures;
instance.require_connectivity = require_connectivity;
instance.pref_service = pref_service;
instance.clock = clock;
auto scheduler =
std::make_unique<FakeNearbyShareScheduler>(std::move(callback));
instance.fake_scheduler = scheduler.get();
pref_name_to_periodic_instance_.insert_or_assign(pref_name, instance);
return scheduler;
}