blob: ce127421a9bb5e5d0380c700ca0940cbc7c0af8b [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_TABS_TAB_STRIP_SCRUBBING_METRICS_H_
#define CHROME_BROWSER_UI_TABS_TAB_STRIP_SCRUBBING_METRICS_H_
#include <stddef.h>
#include <stdint.h>
#include "base/time/time.h"
#include "base/timer/timer.h"
#include "chrome/browser/ui/tabs/tab_strip_user_gesture_details.h"
class TabStripScrubbingMetrics {
public:
// Initializes the timer and timestamp.
void Init();
// Determines which counter to bump, and bumps it, resetting the timestamp if
// required.
void IncrementPressCount(const TabStripUserGestureDetails& user_gesture);
// Logs and resets the press counts.
void RecordTabScrubbingMetrics();
private:
// Timer used to mark intervals for metric collection on how many tabs are
// scrubbed over a certain interval of time.
base::RepeatingTimer tab_scrubbing_interval_timer_;
// Timestamp marking the last time a tab was activated by mouse press. This is
// used in determining how long a tab was active for metrics.
base::TimeTicks last_tab_switch_timestamp_ = base::TimeTicks();
// Counter used to keep track of tab scrubs during intervals set by
// |tab_scrubbing_interval_timer_|.
size_t tabs_scrubbed_by_mouse_press_count_ = 0;
// Counter used to keep track of tab scrubs during intervals set by
// |tab_scrubbing_interval_timer_|.
size_t tabs_scrubbed_by_key_press_count_ = 0;
};
#endif // CHROME_BROWSER_UI_TABS_TAB_STRIP_SCRUBBING_METRICS_H_