chromium/ash/webui/help_app_ui/help_app_page_handler.h

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

#ifndef ASH_WEBUI_HELP_APP_UI_HELP_APP_PAGE_HANDLER_H_
#define ASH_WEBUI_HELP_APP_UI_HELP_APP_PAGE_HANDLER_H_

#include "ash/webui/help_app_ui/help_app_ui.mojom.h"
#include "base/memory/raw_ptr.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/receiver.h"

class GURL;

namespace ash {

class HelpAppUI;

// Implements the help_app mojom interface providing chrome://help-app
// with browser process functions to call from the render process.
class HelpAppPageHandler : public help_app::mojom::PageHandler {
 public:
  HelpAppPageHandler(
      HelpAppUI* help_app_ui,
      mojo::PendingReceiver<help_app::mojom::PageHandler> receiver);
  ~HelpAppPageHandler() override;

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

  // help_app::mojom::PageHandler:
  void OpenFeedbackDialog(OpenFeedbackDialogCallback callback) override;
  void ShowOnDeviceAppControls() override;
  void ShowParentalControls() override;
  void TriggerWelcomeTipCallToAction(
      help_app::mojom::ActionTypeId action_type_id) override;
  void IsLssEnabled(IsLssEnabledCallback callback) override;
  void IsLauncherSearchEnabled(
      IsLauncherSearchEnabledCallback callback) override;
  void LaunchMicrosoft365Setup() override;
  void MaybeShowReleaseNotesNotification() override;
  void GetDeviceInfo(GetDeviceInfoCallback callback) override;
  void OpenUrlInBrowserAndTriggerInstallDialog(const GURL& url) override;

 private:
  mojo::Receiver<help_app::mojom::PageHandler> receiver_;
  raw_ptr<HelpAppUI> help_app_ui_;  // Owns |this|.
  bool is_lss_enabled_;
  bool is_launcher_search_enabled_;
};

}  // namespace ash

#endif  // ASH_WEBUI_HELP_APP_UI_HELP_APP_PAGE_HANDLER_H_