text: // 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_
  