time_to_click_recorder.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef ASH_SYSTEM_TRAY_TIME_TO_CLICK_RECORDER_H_
  5. #define ASH_SYSTEM_TRAY_TIME_TO_CLICK_RECORDER_H_
  6. #include "ui/events/event_handler.h"
  7. namespace views {
  8. class View;
  9. } // namespace views
  10. namespace ash {
  11. // An event handler that will be installed as PreTargetHandler of |target_view|
  12. // to record TimeToClick metrics.
  13. class TimeToClickRecorder : public ui::EventHandler {
  14. public:
  15. class Delegate {
  16. public:
  17. virtual ~Delegate() {}
  18. // Record TimeToClick metrics. Called by TimeToClickRecorder which is a
  19. // PreTargetHandler of |target_view|.
  20. virtual void RecordTimeToClick() = 0;
  21. };
  22. TimeToClickRecorder(Delegate* delegate, views::View* target_view);
  23. TimeToClickRecorder(const TimeToClickRecorder&) = delete;
  24. TimeToClickRecorder& operator=(const TimeToClickRecorder&) = delete;
  25. ~TimeToClickRecorder() override = default;
  26. private:
  27. // ui::EventHandler:
  28. void OnEvent(ui::Event* event) override;
  29. Delegate* const delegate_;
  30. };
  31. } // namespace ash
  32. #endif // ASH_SYSTEM_TRAY_TIME_TO_CLICK_RECORDER_H_