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