// Copyright (c) 2011 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_CHROMEOS_CAMERA_DETECTOR_H_
#define CHROME_BROWSER_CHROMEOS_CAMERA_DETECTOR_H_
#include "base/callback.h"
namespace chromeos {
// Class used to check for camera presence.
class CameraDetector {
public:
enum CameraPresence {
kCameraPresenceUnknown = 0,
kCameraAbsent,
kCameraPresent
};
// Returns result of the last presence check. If no check has been performed
// yet, returns |kCameraPresenceUnknown|.
static CameraPresence camera_presence() {
return camera_presence_;
}
// Checks asynchronously for camera device presence. Only one
// presence check can be running at a time. Calls |check_done|
// on current thread when the check has been completed.
static void StartPresenceCheck(const base::Closure& check_done);
private:
// Called back on UI thread after check has been performed.
static void OnPresenceCheckDone(const base::Closure& callback, bool present);
// Checks for camera presence. Runs on a thread that allows I/O.
static bool CheckPresence();
// Result of the last presence check.
static CameraPresence camera_presence_;
static bool presence_check_in_progress_;
DISALLOW_COPY_AND_ASSIGN(CameraDetector);
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_CAMERA_DETECTOR_H_