blob: 019bc8d7a438192e65d35a3a8b1612583829ec79 [file] [log] [blame] [edit]
// 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.
#include "testing/libfuzzer/renderer_fuzzing/renderer_fuzzing.h"
#include <map>
#include "base/memory/singleton.h"
void RendererFuzzing::Run(
const blink::BrowserInterfaceBrokerProxy* context_interface_broker_proxy,
blink::ThreadSafeBrowserInterfaceBrokerProxy*
process_interface_broker_proxy,
blink::AssociatedInterfaceProvider* associated_interface_provider,
const std::string& fuzzer_id,
std::vector<uint8_t>&& input,
base::OnceClosure done_closure) {
auto it = RendererFuzzing::GetInstance()->fuzzers_.find(fuzzer_id);
CHECK(it != std::end(RendererFuzzing::GetInstance()->fuzzers_));
it->second->Run(context_interface_broker_proxy,
process_interface_broker_proxy, associated_interface_provider,
std::move(input), std::move(done_closure));
}
RendererFuzzing* RendererFuzzing::GetInstance() {
// We must use a leaky singleton here because at this point of initialization,
// we might not have an AtExit manager set up yet.
return base::Singleton<RendererFuzzing,
base::LeakySingletonTraits<RendererFuzzing>>::get();
}