// third_party/blink/public/mojom/worker/shared_worker_client.mojom.h is auto generated by mojom_bindings_generator.py, do not edit

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

#ifndef THIRD_PARTY_BLINK_PUBLIC_MOJOM_WORKER_SHARED_WORKER_CLIENT_MOJOM_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_WORKER_SHARED_WORKER_CLIENT_MOJOM_H_

#include <stdint.h>

#include <limits>
#include <type_traits>
#include <utility>

#include "third_party/abseil-cpp/absl/types/optional.h"
#include "mojo/public/cpp/bindings/clone_traits.h"
#include "mojo/public/cpp/bindings/equals_traits.h"
#include "mojo/public/cpp/bindings/lib/serialization.h"
#include "mojo/public/cpp/bindings/struct_ptr.h"
#include "mojo/public/cpp/bindings/struct_traits.h"
#include "mojo/public/cpp/bindings/union_traits.h"

#include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h"

#include "third_party/blink/public/mojom/worker/shared_worker_client.mojom-shared.h"
#include "third_party/blink/public/mojom/worker/shared_worker_client.mojom-forward.h"
#include "third_party/blink/public/mojom/worker/shared_worker_creation_context_type.mojom-forward.h"
#include "third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom-forward.h"
#include <string>
#include <vector>

#include "mojo/public/cpp/bindings/lib/control_message_handler.h"
#include "mojo/public/cpp/bindings/raw_ptr_impl_ref_traits.h"


#include "third_party/blink/public/common/common_export.h"

#ifdef KYTHE_IS_RUNNING
#pragma kythe_inline_metadata "Metadata comment"
#endif


namespace blink {
namespace mojom {

class SharedWorkerClientProxy;

template <typename ImplRefTraits>
class SharedWorkerClientStub;

class SharedWorkerClientRequestValidator;


// @generated_from: blink.mojom.SharedWorkerClient
class BLINK_COMMON_EXPORT SharedWorkerClient
    : public SharedWorkerClientInterfaceBase {
 public:
  static const char Name_[];
  static std::pair<uint32_t, const void*> MessageToMethodInfo_(mojo::Message& message);
  static const char* MessageToMethodName_(mojo::Message& message);
  static constexpr uint32_t Version_ = 0;
  static constexpr bool PassesAssociatedKinds_ = false;
  static constexpr bool HasSyncMethods_ = false;
  static constexpr bool HasUninterruptableMethods_ = false;

  using Base_ = SharedWorkerClientInterfaceBase;
  using Proxy_ = SharedWorkerClientProxy;

  template <typename ImplRefTraits>
  using Stub_ = SharedWorkerClientStub<ImplRefTraits>;

  using RequestValidator_ = SharedWorkerClientRequestValidator;
  using ResponseValidator_ = mojo::PassThroughFilter;
  enum MethodMinVersions : uint32_t {
    kOnCreatedMinVersion = 0,
    kOnConnectedMinVersion = 0,
    kOnScriptLoadFailedMinVersion = 0,
    kOnFeatureUsedMinVersion = 0,
  };

// crbug.com/1340245 - this causes binary size bloat on Fuchsia, and we're OK
// with not having this data in traces there.
#if !BUILDFLAG(IS_FUCHSIA)
  struct OnCreated_Sym {
    NOINLINE static void IPCSymbol();
  };
  struct OnConnected_Sym {
    NOINLINE static void IPCSymbol();
  };
  struct OnScriptLoadFailed_Sym {
    NOINLINE static void IPCSymbol();
  };
  struct OnFeatureUsed_Sym {
    NOINLINE static void IPCSymbol();
  };
#endif // !BUILDFLAG(IS_FUCHSIA)
  virtual ~SharedWorkerClient() = default;

  
// @generated_from: blink.mojom.SharedWorkerClient.OnCreated
  virtual void OnCreated(::blink::mojom::SharedWorkerCreationContextType creation_context_type) = 0;

  
// @generated_from: blink.mojom.SharedWorkerClient.OnConnected
  virtual void OnConnected(const std::vector<::blink::mojom::WebFeature>& features_used) = 0;

  
// @generated_from: blink.mojom.SharedWorkerClient.OnScriptLoadFailed
  virtual void OnScriptLoadFailed(const std::string& error_message) = 0;

  
// @generated_from: blink.mojom.SharedWorkerClient.OnFeatureUsed
  virtual void OnFeatureUsed(::blink::mojom::WebFeature feature) = 0;
};



// @generated_from: blink.mojom.SharedWorkerClient
class BLINK_COMMON_EXPORT SharedWorkerClientProxy
    : public SharedWorkerClient {
 public:
  using InterfaceType = SharedWorkerClient;

  explicit SharedWorkerClientProxy(mojo::MessageReceiverWithResponder* receiver);
  
// @generated_from: blink.mojom.SharedWorkerClient.OnCreated
  void OnCreated(::blink::mojom::SharedWorkerCreationContextType creation_context_type) final;
  
// @generated_from: blink.mojom.SharedWorkerClient.OnConnected
  void OnConnected(const std::vector<::blink::mojom::WebFeature>& features_used) final;
  
// @generated_from: blink.mojom.SharedWorkerClient.OnScriptLoadFailed
  void OnScriptLoadFailed(const std::string& error_message) final;
  
// @generated_from: blink.mojom.SharedWorkerClient.OnFeatureUsed
  void OnFeatureUsed(::blink::mojom::WebFeature feature) final;

 private:
  mojo::MessageReceiverWithResponder* receiver_;
};
class BLINK_COMMON_EXPORT SharedWorkerClientStubDispatch {
 public:
  static bool Accept(SharedWorkerClient* impl, mojo::Message* message);
  static bool AcceptWithResponder(
      SharedWorkerClient* impl,
      mojo::Message* message,
      std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};

template <typename ImplRefTraits =
              mojo::RawPtrImplRefTraits<SharedWorkerClient>>
class SharedWorkerClientStub
    : public mojo::MessageReceiverWithResponderStatus {
 public:
  using ImplPointerType = typename ImplRefTraits::PointerType;

  SharedWorkerClientStub() = default;
  ~SharedWorkerClientStub() override = default;

  void set_sink(ImplPointerType sink) { sink_ = std::move(sink); }
  ImplPointerType& sink() { return sink_; }

  bool Accept(mojo::Message* message) override {
    if (ImplRefTraits::IsNull(sink_))
      return false;
    return SharedWorkerClientStubDispatch::Accept(
        ImplRefTraits::GetRawPointer(&sink_), message);
  }

  bool AcceptWithResponder(
      mojo::Message* message,
      std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
    if (ImplRefTraits::IsNull(sink_))
      return false;
    return SharedWorkerClientStubDispatch::AcceptWithResponder(
        ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
  }

 private:
  ImplPointerType sink_;
};
class BLINK_COMMON_EXPORT SharedWorkerClientRequestValidator : public mojo::MessageReceiver {
 public:
  bool Accept(mojo::Message* message) override;
};





}  // namespace mojom
}  // namespace blink

namespace mojo {

}  // namespace mojo

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_WORKER_SHARED_WORKER_CLIENT_MOJOM_H_

/* Metadata comment
eyJtZXRhIjogW3siZW5kIjogMTkyNywgImJlZ2luIjogMTkwOSwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
OiAibW9qb20iLCAic2lnbmF0dXJlIjogImJsaW5rLm1vam9tLlNoYXJlZFdvcmtlckNsaWVudCJ9
fSwgeyJlbmQiOiAzNDYwLCAiYmVnaW4iOiAzNDUxLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2Vu
ZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJj
aHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pv
bSIsICJzaWduYXR1cmUiOiAiYmxpbmsubW9qb20uU2hhcmVkV29ya2VyQ2xpZW50Lk9uQ3JlYXRl
ZCJ9fSwgeyJlbmQiOiAzNjMwLCAiYmVnaW4iOiAzNjE5LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv
Z2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6
ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJt
b2pvbSIsICJzaWduYXR1cmUiOiAiYmxpbmsubW9qb20uU2hhcmVkV29ya2VyQ2xpZW50Lk9uQ29u
bmVjdGVkIn19LCB7ImVuZCI6IDM4MDUsICJiZWdpbiI6IDM3ODcsICJlZGdlIjogIiUva3l0aGUv
ZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29y
cHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdl
IjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJibGluay5tb2pvbS5TaGFyZWRXb3JrZXJDbGllbnQu
T25TY3JpcHRMb2FkRmFpbGVkIn19LCB7ImVuZCI6IDM5NDIsICJiZWdpbiI6IDM5MjksICJlZGdl
IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2
bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3Jj
IiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJibGluay5tb2pvbS5TaGFyZWRX
b3JrZXJDbGllbnQuT25GZWF0dXJlVXNlZCJ9fSwgeyJlbmQiOiA0MzQxLCAiYmVnaW4iOiA0MzMy
LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmlu
ZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9t
aXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiYmxpbmsubW9qb20u
U2hhcmVkV29ya2VyQ2xpZW50Lk9uQ3JlYXRlZCJ9fSwgeyJlbmQiOiA0NTA0LCAiYmVnaW4iOiA0
NDkzLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2Rl
ZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2No
cm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiYmxpbmsubW9q
b20uU2hhcmVkV29ya2VyQ2xpZW50Lk9uQ29ubmVjdGVkIn19LCB7ImVuZCI6IDQ2NzIsICJiZWdp
biI6IDQ2NTQsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNo
b3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j
b20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJibGlu
ay5tb2pvbS5TaGFyZWRXb3JrZXJDbGllbnQuT25TY3JpcHRMb2FkRmFpbGVkIn19LCB7ImVuZCI6
IDQ4MDIsICJiZWdpbiI6IDQ3ODksICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi
dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv
b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h
dHVyZSI6ICJibGluay5tb2pvbS5TaGFyZWRXb3JrZXJDbGllbnQuT25GZWF0dXJlVXNlZCJ9fV0s
ICJ0eXBlIjogImt5dGhlMCJ9
*/