// Copyright 2019 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 CHROME_BROWSER_SHARING_SHARING_DEVICE_SOURCE_H_
#define CHROME_BROWSER_SHARING_SHARING_DEVICE_SOURCE_H_

#include <memory>
#include <string>
#include <vector>

#include "base/callback_forward.h"
#include "base/macros.h"
#include "base/time/time.h"
#include "components/sync/protocol/device_info_specifics.pb.h"

namespace syncer {
class DeviceInfo;
}  // namespace syncer

class SharingDeviceSource {
 public:
  SharingDeviceSource();
  virtual ~SharingDeviceSource();

  // Returns if the source is ready. Calling GetAllDevices before this is true
  // returns an empty list.
  virtual bool IsReady() = 0;

  // Returns the device matching |guid|, or nullptr if no match was found.
  virtual std::unique_ptr<syncer::DeviceInfo> GetDeviceByGuid(
      const std::string& guid) = 0;

  // Returns all device candidates for |required_feature|. Internally filters
  // out older devices and returns them in (not strictly) decreasing order of
  // last updated timestamp.
  virtual std::vector<std::unique_ptr<syncer::DeviceInfo>> GetDeviceCandidates(
      sync_pb::SharingSpecificFields::EnabledFeatures required_feature) = 0;

  // Adds a callback to be run when the SharingDeviceSource is ready. If a
  // callback is added when it is already ready, it will be run immediately.
  void AddReadyCallback(base::OnceClosure callback);

 protected:
  void MaybeRunReadyCallbacks();

 private:
  std::vector<base::OnceClosure> ready_callbacks_;

  DISALLOW_COPY_AND_ASSIGN(SharingDeviceSource);
};

#endif  // CHROME_BROWSER_SHARING_SHARING_DEVICE_SOURCE_H_
