blob: 3a78199d9de84ecde713fb998f8a7344a50b266a [file] [log] [blame]
// Copyright (c) 2013 The Chromium OS 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 POWER_MANAGER_POWERD_SYSTEM_BACKLIGHT_STUB_H_
#define POWER_MANAGER_POWERD_SYSTEM_BACKLIGHT_STUB_H_
#include <base/compiler_specific.h>
#include <base/macros.h>
#include <base/observer_list.h>
#include <base/time/time.h>
#include "power_manager/common/clock.h"
#include "power_manager/powerd/system/backlight_interface.h"
#include "power_manager/powerd/system/backlight_observer.h"
namespace power_manager {
namespace system {
// Stub implementation of BacklightInterface for testing.
class BacklightStub : public BacklightInterface {
public:
BacklightStub(int64_t max_level, int64_t current_level);
~BacklightStub() override;
void set_clock(Clock* clock) { clock_ = clock; }
void set_device_exists(bool exists) { device_exists_ = exists; }
void set_max_level(int64_t level) { max_level_ = level; }
void set_current_level(int64_t level) { current_level_ = level; }
void set_transition_in_progress(bool in_progress) {
transition_in_progress_ = in_progress;
}
void set_should_fail(bool should_fail) { should_fail_ = should_fail; }
int64_t current_level() const { return current_level_; }
base::TimeDelta current_interval() const { return current_interval_; }
base::TimeTicks last_set_brightness_level_time() const {
return last_set_brightness_level_time_;
}
// Tells |observers_| that the underlying device changed.
void NotifyDeviceChanged();
// BacklightInterface implementation:
void AddObserver(BacklightObserver* observer) override;
void RemoveObserver(BacklightObserver* observer) override;
bool DeviceExists() override;
int64_t GetMaxBrightnessLevel() override;
int64_t GetCurrentBrightnessLevel() override;
bool SetBrightnessLevel(int64_t level, base::TimeDelta interval) override;
bool TransitionInProgress() const override;
private:
base::ObserverList<BacklightObserver> observers_;
// Not owned and may be null. Used to update
// |last_set_brightness_level_time_|.
Clock* clock_ = nullptr;
// True if the underlying backlight device exists.
bool device_exists_ = true;
// Maximum backlight level.
int64_t max_level_ = -1;
// Most-recently-set brightness level.
int64_t current_level_ = -1;
// |interval| parameter passed to most recent SetBrightnessLevel() call.
base::TimeDelta current_interval_;
// Return value for TransitionInProgress().
bool transition_in_progress_ = false;
// Should we report failure in response to future requests?
bool should_fail_ = false;
// Last time at which SetBrightnessLevel() was called with a new level.
base::TimeTicks last_set_brightness_level_time_;
DISALLOW_COPY_AND_ASSIGN(BacklightStub);
};
} // namespace system
} // namespace power_manager
#endif // POWER_MANAGER_POWERD_SYSTEM_BACKLIGHT_STUB_H_