chromium/ios/chrome/browser/webui/ui_bundled/user_actions_handler.h

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_CHROME_BROWSER_WEBUI_UI_BUNDLED_USER_ACTIONS_HANDLER_H_
#define IOS_CHROME_BROWSER_WEBUI_UI_BUNDLED_USER_ACTIONS_HANDLER_H_

#include <string>

#include "base/metrics/user_metrics.h"
#include "ios/web/public/webui/web_ui_ios_message_handler.h"

namespace base {
class TimeTicks;
}  // namespace base

// UI Handler for chrome://user-actions/
// It listens to user action notifications and passes those notifications
// into the Javascript to update the page.
class UserActionsHandler : public web::WebUIIOSMessageHandler {
 public:
  UserActionsHandler();

  UserActionsHandler(const UserActionsHandler&) = delete;
  UserActionsHandler& operator=(const UserActionsHandler&) = delete;

  ~UserActionsHandler() override;

  // WebUIIOSMessageHandler.
  void RegisterMessages() override;

 private:
  // Called whenever a user action is registered.
  void OnUserAction(const std::string& action, base::TimeTicks action_time);

  // The callback to invoke whenever a user action is registered.
  base::ActionCallback action_callback_;
};

#endif  // IOS_CHROME_BROWSER_WEBUI_UI_BUNDLED_USER_ACTIONS_HANDLER_H_