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

#ifndef COMPONENTS_PERMISSIONS_CONTEXTS_CLIPBOARD_SANITIZED_WRITE_PERMISSION_CONTEXT_H_
#define COMPONENTS_PERMISSIONS_CONTEXTS_CLIPBOARD_SANITIZED_WRITE_PERMISSION_CONTEXT_H_

#include "components/permissions/content_setting_permission_context_base.h"
#include "components/permissions/contexts/clipboard_permission_context_delegate.h"

namespace permissions {

// Manages Clipboard API user permissions, for sanitized write only.
class ClipboardSanitizedWritePermissionContext
    : public ContentSettingPermissionContextBase {
 public:
  explicit ClipboardSanitizedWritePermissionContext(
      content::BrowserContext* browser_context,
      std::unique_ptr<ClipboardPermissionContextDelegate> delegate);
  ~ClipboardSanitizedWritePermissionContext() override;

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

 private:
  // PermissionContextBase:
  void DecidePermission(std::unique_ptr<PermissionRequestData> request_data,
                        BrowserPermissionCallback callback) override;

  // ContentSettingPermissionContextBase:
  ContentSetting GetContentSettingStatusInternal(
      content::RenderFrameHost* render_frame_host,
      const GURL& requesting_origin,
      const GURL& embedding_origin) const override;

  std::unique_ptr<ClipboardPermissionContextDelegate> delegate_;
};

}  // namespace permissions

#endif  // COMPONENTS_PERMISSIONS_CONTEXTS_CLIPBOARD_SANITIZED_WRITE_PERMISSION_CONTEXT_H_
