legacymetrics_user_event_recorder.cc 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // Copyright 2019 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. #include "components/fuchsia_legacymetrics/legacymetrics_user_event_recorder.h"
  5. #include <utility>
  6. #include "base/callback.h"
  7. #include "base/metrics/user_metrics.h"
  8. #include "base/time/time.h"
  9. namespace fuchsia_legacymetrics {
  10. constexpr size_t LegacyMetricsUserActionRecorder::kMaxEventCount;
  11. LegacyMetricsUserActionRecorder::LegacyMetricsUserActionRecorder()
  12. : on_event_callback_(
  13. base::BindRepeating(&LegacyMetricsUserActionRecorder::OnUserAction,
  14. base::Unretained(this))) {
  15. base::AddActionCallback(on_event_callback_);
  16. }
  17. LegacyMetricsUserActionRecorder::~LegacyMetricsUserActionRecorder() {
  18. base::RemoveActionCallback(on_event_callback_);
  19. }
  20. bool LegacyMetricsUserActionRecorder::HasEvents() const {
  21. return !events_.empty();
  22. }
  23. std::vector<fuchsia::legacymetrics::UserActionEvent>
  24. LegacyMetricsUserActionRecorder::TakeEvents() {
  25. return std::move(events_);
  26. }
  27. void LegacyMetricsUserActionRecorder::OnUserAction(const std::string& action,
  28. base::TimeTicks time) {
  29. if (events_.size() >= kMaxEventCount)
  30. return;
  31. fuchsia::legacymetrics::UserActionEvent fidl_event;
  32. fidl_event.set_name(action);
  33. fidl_event.set_time(time.ToZxTime());
  34. events_.push_back(std::move(fidl_event));
  35. }
  36. } // namespace fuchsia_legacymetrics