// Copyright 2017 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 MOJO_PUBLIC_TOOLS_FUZZERS_FUZZ_IMPL_H_
#define MOJO_PUBLIC_TOOLS_FUZZERS_FUZZ_IMPL_H_
#include "mojo/public/cpp/bindings/associated_binding_set.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/tools/fuzzers/fuzz.mojom.h"
class FuzzImpl : public fuzz::mojom::FuzzInterface,
public fuzz::mojom::FuzzDummyInterface {
public:
explicit FuzzImpl(fuzz::mojom::FuzzInterfaceRequest request);
~FuzzImpl() override;
// fuzz::mojom::FuzzInterface:
void FuzzBasic() override;
void FuzzBasicResp(FuzzBasicRespCallback callback) override;
void FuzzBasicSyncResp(FuzzBasicSyncRespCallback callback) override;
void FuzzArgs(fuzz::mojom::FuzzStructPtr a,
fuzz::mojom::FuzzStructPtr b) override;
void FuzzArgsResp(fuzz::mojom::FuzzStructPtr a,
fuzz::mojom::FuzzStructPtr b,
FuzzArgsRespCallback callback) override;
void FuzzArgsSyncResp(fuzz::mojom::FuzzStructPtr a,
fuzz::mojom::FuzzStructPtr b,
FuzzArgsSyncRespCallback callback) override;
void FuzzAssociated(
fuzz::mojom::FuzzDummyInterfaceAssociatedRequest req) override;
// fuzz::mojom::FuzzDummyInterface:
void Ping() override;
/* Expose the binding to the fuzz harness. */
mojo::Binding<FuzzInterface> binding_;
private:
mojo::AssociatedBindingSet<FuzzDummyInterface> associated_bindings_;
};
#endif // MOJO_PUBLIC_TOOLS_FUZZERS_FUZZ_IMPL_H_