14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file.
44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#ifndef ASH_AUTOCLICK_AUTOCLICK_CONTROLLER_H
64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#define ASH_AUTOCLICK_AUTOCLICK_CONTROLLER_H
74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
88bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "ash/ash_export.h"
98bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace ash {
114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Controls the autoclick a11y feature in ash.
134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// If enabled, we will automatically send a click event a short time after
144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// the mouse had been at rest.
158bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class ASH_EXPORT AutoclickController {
164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public:
174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual ~AutoclickController() {}
184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // Set whether autoclicking is enabled.
204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual void SetEnabled(bool enabled) = 0;
214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // Returns true if autoclicking is enabled.
234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual bool IsEnabled() const = 0;
244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
258bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // Set the time to wait in milliseconds from when the mouse stops moving
268bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // to when the autoclick event is sent.
278bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  virtual void SetAutoclickDelay(int delay_ms) = 0;
284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // Returns the autoclick delay in milliseconds.
308bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  virtual int GetAutoclickDelay() const = 0;
314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  static AutoclickController* CreateInstance();
334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // The default wait time between last mouse movement and sending
358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // the autoclick.
368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  static const int kDefaultAutoclickDelayMs;
378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) protected:
394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  AutoclickController() {}
404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)};
414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}  // namespace ash
434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif  // ASH_AUTOCLICK_AUTOCLICK_CONTROLLER_H
45