#include "ui/base/ime/win/virtual_keyboard_debounce_timer.h"
namespace ui {
VirtualKeyboardDebounceTimer::VirtualKeyboardDebounceTimer(int delay_ms)
: delay_ms_(delay_ms) {}
VirtualKeyboardDebounceTimer::~VirtualKeyboardDebounceTimer() = default;
void VirtualKeyboardDebounceTimer::RequestRun(base::OnceClosure callback) {
DCHECK(callback);
callback_ = std::move(callback);
base::TimeDelta delay(base::Milliseconds(delay_ms_));
delay -= base::TimeTicks::Now() - time_last_run_;
timer_.Start(
FROM_HERE, delay, this,
&VirtualKeyboardDebounceTimer::HandleLastVirtualKeyboardVisibility);
}
void VirtualKeyboardDebounceTimer::CancelRequest() {
timer_.Stop();
}
void VirtualKeyboardDebounceTimer::HandleLastVirtualKeyboardVisibility() {
time_last_run_ = base::TimeTicks::Now();
if (callback_)
std::move(callback_).Run();
}
}