This source file includes following definitions.
- GetDelayMillis
- state_
- state_
- RequestStart
- Stop
- Attach
- OnDidStart
#include "device_sensor_event_pump.h"
#include "base/logging.h"
#include "content/public/renderer/render_thread.h"
namespace content {
const int DeviceSensorEventPump::kDefaultPumpDelayMillis = 50;
int DeviceSensorEventPump::GetDelayMillis() const {
return pump_delay_millis_;
}
DeviceSensorEventPump::DeviceSensorEventPump()
: pump_delay_millis_(kDefaultPumpDelayMillis),
state_(STOPPED) {
}
DeviceSensorEventPump::DeviceSensorEventPump(int pump_delay_millis)
: pump_delay_millis_(pump_delay_millis),
state_(STOPPED) {
DCHECK(pump_delay_millis_ > 0);
}
DeviceSensorEventPump::~DeviceSensorEventPump() {
}
bool DeviceSensorEventPump::RequestStart() {
DVLOG(2) << "requested start";
if (state_ != STOPPED)
return false;
DCHECK(!timer_.IsRunning());
if (SendStartMessage()) {
state_ = PENDING_START;
return true;
}
return false;
}
bool DeviceSensorEventPump::Stop() {
DVLOG(2) << "stop";
if (state_ == STOPPED)
return true;
DCHECK((state_ == PENDING_START && !timer_.IsRunning()) ||
(state_ == RUNNING && timer_.IsRunning()));
if (timer_.IsRunning())
timer_.Stop();
SendStopMessage();
state_ = STOPPED;
return true;
}
void DeviceSensorEventPump::Attach(RenderThread* thread) {
if (!thread)
return;
thread->AddObserver(this);
}
void DeviceSensorEventPump::OnDidStart(base::SharedMemoryHandle handle) {
DVLOG(2) << "did start sensor event pump";
if (state_ != PENDING_START)
return;
DCHECK(!timer_.IsRunning());
if (InitializeReader(handle)) {
timer_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(GetDelayMillis()),
this, &DeviceSensorEventPump::FireEvent);
state_ = RUNNING;
}
}
}