diagnostics_metrics_message_handler.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright 2021 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_WEBUI_DIAGNOSTICS_UI_DIAGNOSTICS_METRICS_MESSAGE_HANDLER_H_
  5. #define ASH_WEBUI_DIAGNOSTICS_UI_DIAGNOSTICS_METRICS_MESSAGE_HANDLER_H_
  6. #include "base/time/time.h"
  7. #include "content/public/browser/web_ui_message_handler.h"
  8. namespace content {
  9. class WebUI;
  10. }
  11. namespace ash {
  12. namespace diagnostics {
  13. namespace metrics {
  14. // The enums below are used in histograms, do not remove/renumber entries. If
  15. // you're adding to any of these enums, update the corresponding enum listing in
  16. // tools/metrics/histograms/enums.xml: CrosDiagnosticsNavigationView.
  17. enum class NavigationView {
  18. kSystem = 0,
  19. kConnectivity = 1,
  20. kInput = 2,
  21. kMaxValue = kInput,
  22. };
  23. // ChromeOS Diagnostics app metrics handler for recording metrics from the UI.
  24. class DiagnosticsMetricsMessageHandler : public content::WebUIMessageHandler {
  25. public:
  26. explicit DiagnosticsMetricsMessageHandler(NavigationView initial_view);
  27. DiagnosticsMetricsMessageHandler(DiagnosticsMetricsMessageHandler&) = delete;
  28. DiagnosticsMetricsMessageHandler& operator=(
  29. DiagnosticsMetricsMessageHandler&) = delete;
  30. ~DiagnosticsMetricsMessageHandler() override;
  31. // content::WebUIMessageHandler:
  32. void RegisterMessages() override;
  33. // Test helper functions:
  34. NavigationView GetCurrentViewForTesting();
  35. base::TimeDelta GetElapsedNavigationTimeDeltaForTesting();
  36. void SetWebUiForTesting(content::WebUI* web_ui);
  37. private:
  38. // Records navigation events between screens within Diagnostics App.
  39. void HandleRecordNavigation(const base::Value::List& args);
  40. NavigationView current_view_;
  41. base::Time navigation_started_;
  42. };
  43. } // namespace metrics
  44. } // namespace diagnostics
  45. } // namespace ash
  46. #endif // ASH_WEBUI_DIAGNOSTICS_UI_DIAGNOSTICS_METRICS_MESSAGE_HANDLER_H_