| // 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(); | |
| } |