blob: d1c7e3eadcdc3a5bac91444b1dff6790a10ad1ca [file] [log] [blame]
// Copyright 2018 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 UI_BASE_ACCELERATORS_TEST_ACCELERATOR_TARGET_H_
#define UI_BASE_ACCELERATORS_TEST_ACCELERATOR_TARGET_H_
#include "ui/base/accelerators/accelerator.h"
namespace ui {
// AcceleratorTarget implementation suitable for tests. Tracks calls to
// AcceleratorPressed() and allows for configuration of values returned by
// various functions.
class TestAcceleratorTarget : public AcceleratorTarget {
public:
// |accelerator_pressed_result| is used as the return value for
// AcceleratorPressed().
explicit TestAcceleratorTarget(bool accelerator_pressed_result = true);
~TestAcceleratorTarget() override;
void set_can_handle_accelerators(bool can_handle_accelerators) {
can_handle_accelerators_ = can_handle_accelerators;
}
int accelerator_count() const { return accelerator_count_; }
int accelerator_repeat_count() const { return accelerator_repeat_count_; }
// Returns the number of times AcceleratorPressed() was called with an
// accelerator whose repeat value was false.
int accelerator_non_repeat_count() const {
return accelerator_count_ - accelerator_repeat_count_;
}
void ResetCounts();
// AcceleratorTarget:
bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
bool CanHandleAccelerators() const override;
private:
// Number of times AcceleratorPressed() was called.
int accelerator_count_ = 0;
// Number of times AcceleratorPressed() was called and Accelerator::IsRepeat()
// was true.
int accelerator_repeat_count_ = 0;
// Return value of AcceleratorPressed().
const bool accelerator_pressed_result_;
// Return value of CanHandleAccelerators().
bool can_handle_accelerators_ = true;
DISALLOW_COPY_AND_ASSIGN(TestAcceleratorTarget);
};
} // namespace ui
#endif // UI_BASE_ACCELERATORS_TEST_ACCELERATOR_TARGET_H_