chromium/ash/webui/common/sea_pen_provider.h

// Copyright 2024 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_COMMON_SEA_PEN_PROVIDER_H_
#define ASH_WEBUI_COMMON_SEA_PEN_PROVIDER_H_

#include "ash/webui/common/mojom/sea_pen.mojom.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"

namespace ash::common {

// An interface for binding mojom::SeaPenProvider to a WebUI. Used for
// VC Background and Personalization WebUIs.
class SeaPenProvider {
 public:
  virtual ~SeaPenProvider() = default;

  virtual void BindInterface(
      mojo::PendingReceiver<::ash::personalization_app::mojom::SeaPenProvider>
          receiver) = 0;

  // Determines if the current active profile is eligible to see the SeaPen UI.
  virtual bool IsEligibleForSeaPen() = 0;

  virtual bool IsEligibleForSeaPenTextInput() = 0;

  // Managed users controlled by enterprise policy can see Sea Pen entry point
  // which is Sea Pen tile in wallpaper subpage or the Image button in camera
  // shelf for VC Background. However, only the users with the policy enabled
  // can access and use the Sea Pen feature.
  virtual bool IsManagedSeaPenEnabled() = 0;

  // Determines if the current active profile is able to see the SeaPen
  // Feedback.
  virtual bool IsManagedSeaPenFeedbackEnabled() = 0;
};

}  // namespace ash::common

#endif  // ASH_WEBUI_COMMON_SEA_PEN_PROVIDER_H_