chromium/chrome/browser/permissions/quiet_permission_prompt_model_android.h

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

#ifndef CHROME_BROWSER_PERMISSIONS_QUIET_PERMISSION_PROMPT_MODEL_ANDROID_H_
#define CHROME_BROWSER_PERMISSIONS_QUIET_PERMISSION_PROMPT_MODEL_ANDROID_H_

#include <string>

#include "components/content_settings/core/common/content_settings_types.h"
#include "components/permissions/permission_ui_selector.h"
#include "url/gurl.h"

// Model representing the expected UI labels on different surfaces and behaviors
// on related events.
struct QuietPermissionPromptModelAndroid {
  enum class PrimaryButtonBehavior {
    kAllowForThisSite,
    kContinueBlocking,
  };

  enum class SecondaryButtonBehavior {
    kShowSettings,
    kAllowForThisSite,
  };

  QuietPermissionPromptModelAndroid();
  QuietPermissionPromptModelAndroid(
      const QuietPermissionPromptModelAndroid& other);
  ~QuietPermissionPromptModelAndroid();

  std::u16string title;
  std::u16string description;
  std::u16string primary_button_label;
  std::u16string secondary_button_label;
  std::u16string learn_more_text;
  PrimaryButtonBehavior primary_button_behavior;
  SecondaryButtonBehavior secondary_button_behavior;
};

QuietPermissionPromptModelAndroid GetQuietPermissionPromptModel(
    permissions::PermissionUiSelector::QuietUiReason reason,
    ContentSettingsType content_settings_type);

GURL GetNotificationBlockedLearnMoreUrl();

#endif  // CHROME_BROWSER_PERMISSIONS_QUIET_PERMISSION_PROMPT_MODEL_ANDROID_H_