// Copyright 2014 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 UI_EVENTS_OZONE_DEVICE_DEVICE_MANAGER_MANUAL_H_
#define UI_EVENTS_OZONE_DEVICE_DEVICE_MANAGER_MANUAL_H_

#include <vector>

#include "base/macros.h"
#include "base/observer_list.h"
#include "ui/events/ozone/device/device_manager.h"

namespace base {
class FilePath;
}

namespace ui {

class DeviceManagerManual : public DeviceManager {
 public:
  DeviceManagerManual();
  ~DeviceManagerManual() override;

 private:
  // DeviceManager overrides:
  void ScanDevices(DeviceEventObserver* observer) override;
  void AddObserver(DeviceEventObserver* observer) override;
  void RemoveObserver(DeviceEventObserver* observer) override;

  void OnDevicesScanned(std::vector<base::FilePath>* result);

  bool have_scanned_devices_;
  std::vector<base::FilePath> devices_;
  base::ObserverList<DeviceEventObserver> observers_;

  base::WeakPtrFactory<DeviceManagerManual> weak_ptr_factory_;

  DISALLOW_COPY_AND_ASSIGN(DeviceManagerManual);
};

}  // namespace ui

#endif  // UI_EVENTS_OZONE_DEVICE_DEVICE_MANAGER_MANUAL_H_
