// 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. #ifndef COMPONENTS_BROWSER_SYNC_ACTIVE_DEVICES_PROVIDER_IMPL_H_ #define COMPONENTS_BROWSER_SYNC_ACTIVE_DEVICES_PROVIDER_IMPL_H_ #include #include #include #include "base/memory/raw_ptr.h" #include "base/sequence_checker.h" #include "base/time/clock.h" #include "components/sync/driver/active_devices_provider.h" #include "components/sync_device_info/device_info_tracker.h" namespace browser_sync { class ActiveDevicesProviderImpl : public syncer::ActiveDevicesProvider, public syncer::DeviceInfoTracker::Observer { public: ActiveDevicesProviderImpl(syncer::DeviceInfoTracker* device_info_tracker, base::Clock* clock); ActiveDevicesProviderImpl(const ActiveDevicesProviderImpl&) = delete; ActiveDevicesProviderImpl& operator=(const ActiveDevicesProviderImpl&) = delete; ~ActiveDevicesProviderImpl() override; // syncer::ActiveDevicesProvider implementation. syncer::ActiveDevicesInvalidationInfo CalculateInvalidationInfo( const std::string& local_cache_guid) const override; void SetActiveDevicesChangedCallback( ActiveDevicesChangedCallback callback) override; // syncer::DeviceInfoTracker::Observer implementation. void OnDeviceInfoChange() override; private: std::vector> GetActiveDevicesSortedByUpdateTime() const; const raw_ptr device_info_tracker_; const raw_ptr clock_; ActiveDevicesChangedCallback callback_; SEQUENCE_CHECKER(sequence_checker_); }; } // namespace browser_sync #endif // COMPONENTS_BROWSER_SYNC_ACTIVE_DEVICES_PROVIDER_IMPL_H_