chromium/ios/chrome/browser/sharing_message/model/ios_sharing_handler_registry_impl.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 IOS_CHROME_BROWSER_SHARING_MESSAGE_MODEL_IOS_SHARING_HANDLER_REGISTRY_IMPL_H_
#define IOS_CHROME_BROWSER_SHARING_MESSAGE_MODEL_IOS_SHARING_HANDLER_REGISTRY_IMPL_H_

#import <map>
#import <set>
#import <vector>

#import "components/sharing_message/sharing_handler_registry.h"

class SharingMessageHandler;
class SharingMessageSender;

// Interface for handling incoming SharingMessage.
class IOSSharingHandlerRegistryImpl : public SharingHandlerRegistry {
 public:
  IOSSharingHandlerRegistryImpl(SharingMessageSender* message_sender);
  ~IOSSharingHandlerRegistryImpl() override;

  // SharingHandlerRegistry:
  SharingMessageHandler* GetSharingHandler(
      components_sharing_message::SharingMessage::PayloadCase payload_case)
      override;
  void RegisterSharingHandler(
      std::unique_ptr<SharingMessageHandler> handler,
      components_sharing_message::SharingMessage::PayloadCase payload_case)
      override;
  void UnregisterSharingHandler(
      components_sharing_message::SharingMessage::PayloadCase payload_case)
      override;
};

#endif  // IOS_CHROME_BROWSER_SHARING_MESSAGE_MODEL_IOS_SHARING_HANDLER_REGISTRY_IMPL_H_